Конвертировать ' к апострофе в PHP

Мои данные содержат в себе множество 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['&apos;']); PHP Notice: Undefined index: &apos; in - on line 3 NULL 

Вот почему он не работает. Почему это не в справочной таблице, это еще один вопрос, к чему я не могу ответить.

Вы пробовали использовать echo htmlspecialchars('They&apos;re here.') ?

Я думаю, это то, что вы ищете.