удаление недопустимого символа UTF-8 – 0xfffe в PHP

Вопрос: Любые идеи, как я могу избавиться от 0xfffe внутри строки через функции PHP? что-то вроде этого ОК? preg_replace('/[x{fffe}-x{ffff}]/u', '', $string)? Лучший ответ: Хорошо, просто чтобы вы знали preg_replace('/[x{fffe}-x{ffff}]/u', '', $string) сделали трюк. Ответ №1 Одна заметка: 0xFFFE (неправильно, см. EDIT ниже - на самом деле это 0xFEFF) обычно используется как так называемый маркер байтового

Вопрос:

Любые идеи, как я могу избавиться от 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), и эта служба в идеале должна быть исправлена, а не иметь дело с этим на стороне клиента.

Оцените статью
Добавить комментарий