удаление неверного символа UTF-8 - 0xfffe в PHP - PullRequest
1 голос
/ 15 декабря 2011

Есть идеи, как избавиться от символа 0xfffe внутри строки с помощью функций PHP?

что-то в этом роде, хорошо? preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

ОК, просто чтобы вы знали, preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string) сделал свое дело.

0 голосов
/ 15 декабря 2011

Одно примечание: 0xFFFE (неправильно, см. РЕДАКТИРОВАТЬ ниже - на самом деле это 0xFEFF ) обычно используется в качестве так называемого маркера порядка байтов, который необязателен в началефайла (и только там!), который указывает порядок байтов содержимого.Он часто включается для таких вещей, как файлы XML.Поэтому может быть возможным рассмотреть только случай содержимого, начинающегося с этого значения, и не беспокоиться об остальном.

РЕДАКТИРОВАТЬ: Как указано в комментарии, это 0xFEFF, который используется в качестве спецификации (см. wikipedia *)1008 * для более), а не 0xFFFE.Таким образом, если бы это была заданная спецификация, она была бы либо отключена, либо декодер принял неправильный порядок (UTF-16 BE против LE).Но более вероятно его использование в качестве неверного маркера;и если так, оригинальный вопрос имеет больше смысла.Единственное дополнительное предложение заключается в том, что тот, кто обслуживает такой контент, вероятно, использует слишком ограничивающее кодирование (ascii, latin-1), и этот сервис в идеале должен быть исправлен, а не иметь дело с этим на стороне клиента.

...