strtr — удаление символов из массива после сортировки в Stack Overflow

Я сортирую данные по алфавиту в PHP из текстового файла, который отлично работает, но, к сожалению, текстовый файл, который заполняется автоматически, содержит символы, такие как # 039; который я хочу удалить из конечного результата. перепробовал множество вещей для замены и удаления символов, но безуспешно. Это то, что я до сих пор:

    <?php
error_reporting(E_ALL);

$fileName = 'cache/_city.txt';
$data     = file_get_contents($fileName);

// Assuming that the file had the data in one line...

// Split the data using the delimiter
$split = explode("|", $data);

// Sort
sort($split);

// Put it all back together
$data = implode("&nbsp", $split);
$data = str_replace("&#039;" , "", $data);

echo $data;

?>

Как удалить этот фрагмент текста из $ data: # 039;

Пример данных :

<a href="?city=Leiden">Leiden</a>|
<a href="?city=Papendrecht">Papendrecht</a>|
<a href="?city=Helmond">Helmond</a>|
<a href="?city=%26%23039%3Bs-Hertogenbosch">&amp;#039;s-Hertogenbosch</a>|
<a href="?city=Hengelo">Hengelo</a>|
<a href="?city=Marknesse">Marknesse</a>|
<a href="?city=Wanssum">Wanssum</a>|
<a href="?city=Rijswijk">Rijswijk</a>|
<a href="?city=Leunen">Leunen</a>|
<a href="?city=Genemuiden">Genemuiden</a>|

0

Решение

Вы пробовали что-то подобное:

$data = str_replace($wrongChar , "", $data);

Редактировать:

Можете ли вы проверить это, даже если я думаю, что вы «очистите» больше, чем нужно:

$data = file_get_contents($fileName);
$data = preg_replace('/[^A-Za-z0-9\-]/', '', $data);

Второе издание:

Зная, что * _replace работает, я немного улучшил свое предложение.

<?php

error_reporting(E_ALL);

// It will apply html_entity_decode serveral times on the string to convert all HTML entities
$recursive_decode = function($str, $depth = 1) use (&$recursive_decode) {
if (!$depth) {
return $str;
}

return $recursive_decode(html_entity_decode($str, ENT_QUOTES, 'UTF-8'), --$depth);
};

$fileName = 'cache/_city.txt';

// In this test, try with a depth egals to 2
$data     = $recursive_decode(file_get_contents($fileName), 2);

// Assuming that the file had the data in one line...

// Split the data using the delimiter
$split = explode('|', $data);

// Sort
sort($split);

// Put it all back together
$data = implode("&nbsp", $split);

// Because recursive_decode converted all entities, your previous "&#039" is now "'"$data = str_replace("'" , "", $data);

echo $data;

?>
0

Другие решения

В вопросе недостаточно информации о том, что вы хотите заменить. Это в основном определит ответ.

Если вы хотите заменить только несколько конкретных символов, лучше всего использовать str_replace или его вариант, но если это число символов «мусор» (подразумевается в вашем ответе), вы можете заменить диапазон Юникод (с preg_replace), например. Кто-то спросил и получил простой ответ здесь: Как заменить символы вне диапазона [0x5E10, 0x7F35] на ‘*’ в PHP?

Ссылка на функцию:

https://secure.php.net/manual/en/function.str-replace.php
https://secure.php.net/manual/en/function.preg-replace.php

Примечание: вы должны использовать &nbsp;не &nbsp,

Редактировать: С новой предоставленной вами информацией кажется, что вы пытаетесь удалить закодированный символ, попробуйте: str_replace('&#039;', '', urldecode($data))

1

По вопросам рекламы [email protected]