У меня есть XML со специальными символами, закодированными как & #xxx; в этом. Пока я выводил эти символы в браузер, это было бы прекрасно, поскольку они были HTML-кодировками (вроде). Но мне нужно прочитать XML-файл с simplexml_load_string
, что приводит к мусору для определенных символов, поскольку они находятся в расширенной таблице ASCII.Декодирование символов HTML с расширенным ASCII
Например:
š
переводит š - но когда я пытаюсь использовать html_entity_decode, я получаю пустой символ.
Я пробовал почти все: от iconv
до mb_decode_numericentity
- ничего не работало.
Как их преобразовать & #xxx; к реальным персонажам ???
[Редактировать] Я нашел эту таблицу http://www.ascii-code.com что утверждает š
является расширенной ASCII символов с помощью ISO-8859-1 Я запутался ...
Учитывая ваш пример, что должен декодировать в š, вы не используете кодировку utf-8, но некоторые iso. Лично я бы переключился на utf-8, но это к тому же. Я предполагаю, что вам нужно указать html_entity_decode(), чтобы придерживаться вашей любимой кодировки вместо того, чтобы принимать значение по умолчанию, указанное в php.ini. –
Спасибо Karel - я действительно пробовал это, используя каждую кодировку, поддерживаемую html_entity_decode(), но никто из них не работал :( – Swissdude
Звучит как нестандартное и/или возможно устаревшее использование объектов HTML.Не уверен, что любая стандартная функция PHP может справиться с этим. Возможно, вам нужно написать пользовательскую функцию 'preg_replace_callback' или аналогичную, которая декодирует эти конкретные кодовые точки. – deceze