Мои данные содержат в себе множество 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.')
?
Я думаю, это то, что вы ищете.