HTML-сущности возвращаются к специальным символам с php - PullRequest
0 голосов
/ 23 ноября 2011

Я хочу преобразовать специальные символы в объекты HTML, а затем вернуться к исходным символам.

Я использовал htmlentities(), а затем html_entity_decode(). У меня все работало нормально, но { и } не возвращаются к исходным персонажам, они остаются { и }.

Что мне теперь делать?

Мой код выглядит так:

$custom_header = htmlentities($custom_header);
$custom_header = html_entity_decode($custom_header);

1 Ответ

2 голосов
/ 23 ноября 2011

Даже если никто не может воспроизвести вашу проблему, вот прямой способ решить ее с помощью простого str_replace .

$input = '<p><script type="text/javascript"> $(document).ready(function() &#123; $("#left_side_custom_image").click(function() &#123; alert("HELLO"); &#125;); &#125;); </script></p> ';
$output = str_replace( array( '&#123;', '&#125;'), array( '{', '}'), $input);

Демо (нажмите «Источник»'ссылка в правом верхнем углу)

Редактировать: Я вижу проблему сейчас.Если ваша входная строка:

"&#123;hello}"

Вызов htmlentities кодирует & в &amp;, что дает вам строку

"&amp;#123;hello}"

&amp;затем позже декодируется обратно в &, чтобы вывести это:

"&#123;hello}"

Исправление - снова отправить строку через html_entity_decode, что будет правильно декодировать ваши сущности.

$custom_header = "&#123;hello}";
$custom_header = htmlentities($custom_header);

$custom_header = html_entity_decode($custom_header);
echo html_entity_decode( $custom_header); // Outputs {hello}
...