Спасибо за ответы, ребята.К сожалению, тех, которые представлены были следующие проблемы:
неправильно по очевидным причинам:
ereg_replace("[^A-Za-z0-9]", "", $string);
Это:
s/[\u00FF-\uFFFF]//
который также использует устаревшую форму Ерег из регулярных выражений также не работают, когда я преобразованный в preg, потому что диапазон был слишком большим для обработки регулярного выражения. Кроме того, в этом диапазоне есть отверстия, которые позволят мусору просачиваться.
Это предположение:
Это проблема кодирования; вы не должны пытаться очистить этих фиктивных персонажей, но поймите, почему вы их забираете.
в то время как действительный, не является хорошим, потому что я не могу контролировать, как данные, которые я получаю, закодированы. Он исходит из внешнего источника. Иногда там мусор, а иногда нет.
Итак, решение, которое я придумал, было относительно грязным, но в отсутствие чего-то более прочного я просто принимаю все стандартные буквы, цифры и символы и отбрасывая остальные.
Это похоже на работу. Раствор выглядит следующим образом:
$fixT = str_replace("£", "£", $string);
$fixT = str_replace("€", "€", $fixT);
$fixT = preg_replace("/[^a-zA-Z0-9\s\.\/:!\[\]\*\+\-\|\<\>@#\$%\^&\(\)_=\';,'\?\\\{\}`~\"]/", "", $fixT);
Если у кого-то есть лучшие идеи, я все еще хочу их услышать. Приветствия.
Каковы эти символы? Такая проблема, как правило, исходит из неверно кодированных данных. Возможно, вам лучше решить эту проблему, чем просто удалить материал, который вы не можете прочитать. Возможно, они скрывают * фактический * контент. –
Наверное, Доминик. Но я не могу контролировать, как эти данные поступают, поэтому я не знаю. – Evernoob