使用html_entity_decode解码,然后遇到问题

时间:2010-03-08 19:39:05

标签: php

使用html_entity_decode函数解码特殊字符 后,我获得替换 实体的空格。我的问题是,当我检查if ($decoded_str[5] == ' ')是否为真时,尽管在$decoded_str[5]中,在解码之前有一个 的空格。如何解决这个问题?我需要能够像这样检查它:if ($decoded_str[5] == ' ')

3 个答案:

答案 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) == ' ')

基本上是与字符串原始值的比较...