Я управляю форумом, предназначенным для поддержки международной математической группы. Я недавно переключил его на Unicode для лучшей поддержки международных символов. При отладке этого преобразования я обнаружил, что не все символы Юникода считаются действительными XHTML (соответствующий веб-сайт выглядит как http://www.w3.org/TR/unicode-xml/).. Один из шагов, который проходит программное обеспечение форума перед представлением сообщений в браузере, заключается в следующем: этап проверки / дезинфекции XHTML. Представляется разумным предположение, что на этом этапе следует удалить все символы Юникода, которые не нравятся XHTML.
Итак, мой вопрос:
Существует ли стандартный (или лучший) способ сделать это в PHP?
(Кстати, форум написан на PHP.)
Полагаю, что отказоустойчивость была бы простой str_replace
(если это тоже самое лучшее, нужно ли мне что-то делать дополнительно, чтобы убедиться, что оно работает правильно с юникодом?), Но это потребует от меня прохождения XHTML DTD (или упомянутая выше страница W3) тщательно выяснить, какие символы перечислить в search части str_replace
, так что, если это лучший способ, кто-то уже сделал это, чтобы я мог украсть, ошибаться, скопировать, это?
(Между прочим, символ, вызвавший проблему, был U + 000C, 'formfeed', который (согласно странице W3) является допустимым HTML, но недопустимым XHTML!)