Вопрос:
Любые идеи, как я могу избавиться от 0xfffe внутри строки через функции PHP?
что-то вроде этого ОК? preg_replace(‘/[x{fffe}-x{ffff}]/u’, », $string)?
Лучший ответ:
Хорошо, просто чтобы вы знали preg_replace(‘/[x{fffe}-x{ffff}]/u’, », $string) сделали трюк.
Ответ №1
Одна заметка: 0xFFFE (неправильно, см. EDIT ниже – на самом деле это 0xFEFF) обычно используется как так называемый маркер байтового порядка, который является необязательной вещью в начале файла (и только там!), Который указывает порядок байтов содержимого, Он часто включается в файлы XML. Таким образом, можно будет рассматривать только случай содержания, начиная с этого значения, и не беспокоиться об остальном.
EDIT: Как отметил комментарий, это 0xFEFF, который используется как спецификация (см. Wikipedia для большего), а не 0xFFFE. Поэтому, если это была специфицированная спецификация, она была бы либо разорена, либо декодер предполагал неправильный порядок (UTF-16 BE против LE). Но, скорее всего, его использование в качестве недопустимого символа маркера; и если да, то исходный вопрос имеет больше смысла. Единственное дополнительное предложение состоит в том, что тот, кто обслуживает такой контент, вероятно, использует слишком ограниченную кодировку (ascii, latin-1), и эта служба в идеале должна быть исправлена, а не иметь дело с этим на стороне клиента.