Мои данные содержат в себе множество HTML-объектов ( • … и т. Д.), Включая ' , Я просто хочу преобразовать его в свой эквивалент.
Я предположил, что htmlspecialchars_decode () будет работать, но – не повезло. Мысли?
Я попробовал это:
echo htmlspecialchars_decode('They're here.');
Но он возвращается: They're here.
Редактировать:
Я также пробовал html_entity_decode (), но он не работает:
echo html_entity_decode('They're here.')
также возвращается: They're here.
Так как ' не является частью HTML 4.01, он не преобразован в ' по умолчанию.
В PHP 5.4.0 были введены дополнительные флаги для обработки разных языков, каждый из которых включает в себя ' как сущность.
Это означает, что вы можете сделать что-то вроде этого:
echo html_entity_decode('They're here.', ENT_QUOTES | ENT_HTML5);
Вам потребуются как ENT_QUOTES (конвертировать одиночные и двойные кавычки), так и ENT_HTML5 (или любой языковой флаг, отличный от ENT_HTML401 , поэтому выберите наиболее подходящую для вашей ситуации).
До PHP 5.4.0 вам нужно будет использовать str_replace :
echo str_replace(''', "'", 'They're here.');
' сущность и многие другие не относятся к таблице перевода PHP, используемой html_entity_decode и htmlspecialchars_decode , к сожалению.
Проверьте этот комментарий из руководства PHP: http://php.net/manual/en/function.get-html-translation-table.php#73410
Существует «правильный» способ, без использования str_replace , @cbuckley был прав, потому что по умолчанию для html_entity_decode является HTML 4.01, но вы можете установить параметр HTML 5, который его расшифрует.
Используйте его так:
html_entity_decode($str,ENT_QUOTES | ENT_HTML5)
Это должно работать:
$value = "They're here."; html_entity_decode(str_replace("'","'",$value));
То, что вы действительно ищете, это html_entity_decode() .
html_entity_decode() преобразует все сущности в символы, тогда как htmlspecialchars_decode() отменяет только то, что будет кодировать htmlspecialchars() .
EDIT: Если посмотреть на примеры на странице, с которой я связан, я сделал несколько больше исследований, и, похоже, не работает следующее:
[matt@scharley ~]$ php <?php $tmp = array_flip(get_html_translation_table(HTML_ENTITIES)); var_dump($tmp[''']); PHP Notice: Undefined index: ' in - on line 3 NULL
Вот почему он не работает. Почему это не в справочной таблице, это еще один вопрос, к чему я не могу ответить.
Вы пробовали использовать echo htmlspecialchars('They're here.') ?
Я думаю, это то, что вы ищете.