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

时间:2013-04-09 17:28:31

标签: php string urlencode urldecode

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

var_dump($str1);
var_dump($str2);

string(21) "Software & Technology" 
string(25) "Software & Technology"

注意$ str2的长度不正确。有谁知道这里发生了什么?

2 个答案:

答案 0 :(得分:5)

您似乎在其中一个字符串中包含HTML&符号&。 在比较字符串之前,您应该使用html_entity_decode

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

现场演示:http://ideone.com/pkWEJC

答案 1 :(得分:0)

使用html_entity_decode将解决&符号(以及其他角色)问题,使用strcmp将处理其余问题。

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