我有一个字符串examples’s
,我正在尝试删除’
或替换为其HTML代码,但此代码对我不起作用:
html_entity_decode(htmlentities("examples’s"))
输出在浏览器中显示此examples�
。
答案 0 :(得分:0)
只需将htmlentities与ENT_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_decode
是htmlentities
的倒数。因此,如果您使用适当的字符编码,则应该如下:
$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_decode
或htmlentities
时,请始终指定字符编码,除非它实际上是ISO 8859-1。在您的情况下,以下可以工作:
html_entity_decode(htmlentities($str, ENT_COMPAT, 'cp1252'), ENT_COMPAT, 'UTF-8')
但是对于简单的编码转换,您也可以使用iconv
或mb_convert_encoding
代替。