使用php将html实体恢复为特殊字符

时间:2011-11-23 02:12:17

标签: php html-entities html-encode

我想将特殊字符转换为HTML实体,然后再转换回原始字符。

我使用了htmlentities(),然后使用了html_entity_decode()。它对我来说很好,但{}没有回到原始字符,它们仍为{}

我现在能做什么?

我的代码如下:

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

1 个答案:

答案 0 :(得分:2)

即使没有人可以复制您的问题,也可以通过简单的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);

Demo(点击右上角的“来源”链接)

编辑:我现在看到了问题。如果您的输入字符串是:

"&#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}