删除html特殊字符删除不起作用

时间:2011-03-14 14:55:01

标签: php html special-characters

我有一个字符串examples’s,我正在尝试删除或替换为其HTML代码,但此代码对我不起作用:

html_entity_decode(htmlentities("examples’s"))

输出在浏览器中显示此examples�

4 个答案:

答案 0 :(得分:0)

只需将htmlentitiesENT_QUOTES选项一起使用。

echo htmlentities("examples’s", ENT_QUOTES);

答案 1 :(得分:0)

试试这个

<?php
echo htmlentities("examples’s", ENT_QUOTES, "UTF-8");
echo html_entity_decode(htmlentities("examples’s", ENT_QUOTES, "UTF-8"),ENT_QUOTES, "UTF-8");
?>

答案 2 :(得分:0)

好像你有编码问题。试试这个

html_entity_decode(htmlentities("examples’s", ENT_COMPAT, 'utf-8'), ENT_COMPAT, 'utf-8')

不知道你不想做什么。

答案 3 :(得分:0)

我不太清楚你想要完成什么。但这是对你得到的结果的解释:

html_entity_decodehtmlentities的倒数。因此,如果您使用适当的字符编码,则应该如下:

$str === html_entity_decode(htmlentities($str))

您获得此意味着您使用UTF-8或其他Unicode字符编码作为输出,因为Unicode使用替换无效字节序列。

可能发生的情况是:您在PHP文件中使用单字节字符编码,以便(U + 2019)使用像Windows-1252那样的单字节进行编码(0x92)。将ISO 8859-1作为htmlentities的默认字符集, 变为实体引用,因为0x92不是ISO 8859-1中的有效字符。对html_entity_decode应用{不会改变任何东西。但是用UTF-8解释它会导致无效的字节序列(即没有改变的0x92字节),而是显示替换字符

因此,当使用html_entity_decodehtmlentities时,请始终指定字符编码,除非它实际上是ISO 8859-1。在您的情况下,以下可以工作:

html_entity_decode(htmlentities($str, ENT_COMPAT, 'cp1252'), ENT_COMPAT, 'UTF-8')

但是对于简单的编码转换,您也可以使用iconvmb_convert_encoding代替。