使用html_entity_decode函数解码特殊字符
后,我获得替换
实体的空格。我的问题是,当我检查if ($decoded_str[5] == ' ')
是否为真时,尽管在$decoded_str[5]
中,在解码之前有一个
的空格。如何解决这个问题?我需要能够像这样检查它:if ($decoded_str[5] == ' ')
答案 0 :(得分:4)
nbsp的字符代码为0xA0,空格为0x20。
根据您的编码,您可能需要比较(ISO-8859-1 /默认值)
if ($decoded_str[5] === '\xa0')
或(UTF-8)
if ($decoded_str[5] === '\xc2' && $decoded_str[6] === '\xa0')
来自html_entity_decode
的手册:
注意:您可能想知道为什么
trim(html_entity_decode(' '));
不会将字符串减少为空字符串,这是因为' '
实体不是ASCII代码32(被剥离)trim()
),但默认ISO 8859-1字符集中的ASCII代码160(0xa0)。
答案 1 :(得分:1)
这是因为
不是空间:它是Non-breaking space。
这意味着它的字符代码不是0x20
,而是0xA0
(当然,这取决于字符集,我想......)
答案 2 :(得分:0)
这是正确的行为,因为html_entity_decode
转换了所有适用的html字符,因此也是&所以你可以使用这个来检查空间..
if (htmlentities($dec) == ' ')
基本上是与字符串原始值的比较...