字符串中的&符号导致长度/比较不正确


Ampersand in String causing incorrect length/comparison

我有两个字符串(应该是相同的)。一个是从API结果中提取的,另一个由用户输入。我试着比较他们和失败。当我执行var_dump时,我得到以下内容:

var_dump($str1);
var_dump($str2);
string(21) "Software & Technology" 
string(25) "Software & Technology"

注意$str2的长度不正确。有人知道这是怎么回事吗?

似乎在其中一个字符串中有HTML &字符&。在比较字符串之前,应该使用html_entity_decode:

if (html_entity_decode($str1) == html_entity_decode($str2)) {
    // ...
}

实时演示:http://ideone.com/pkWEJC

使用html_entity_decode将解决与字符(和其他字符)问题,使用strcmp将处理其余问题。

if (strcmp(html_entity_decode($str1), html_entity_decode($str2)) == 0) {
    // ..
}