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