2011-05-18 81 views
0

我试图确定两个字符串是否匹配,即使当我将它们打印出来时,它们也是相同的,但仍然表示它们不匹配。我试着投他们两个字符串,我试图用“===”而不是“==”,但也解决了这个问题...PHP中的变量比较问题

if(preg_match("#^Availability:#", $test)) { 
    //just to note: $test = "Availability: Lorem Ipsum"; 

    $nid = 1; 
    $prep = explode("Availability:", $test); 

    $orig = node_load($nid); 

    print $prep[1]; //Prints Lorem Ipsum 
    print($orig->title); //Prints Lorem Ipsum 

    if((string)$orig->title == (string)$prep[1]) { 
     print 'ok'; 
    } else { 
     print 'nope'; //Always prints nope 
    } 
    ... 
+1

可能是换行符/空格问题。你可以对两个值做一个trim(),看看它们是否匹配? – 2011-05-18 15:26:08

回答

3

$测试有Availability后空间:也许你必须在修饰之前修剪字符串。像那

if(trim($orig->title) == trim($prep[1])) 
+0

是的,就是这样......谢谢......(我再接受七分钟,但我会!) – 2011-05-18 15:31:57

0

我会说这几乎肯定是在开始和/或您的字符串结束的空间。

例如,您在做explode("Availability:",$test);,但是您的字符串在'Lorum'之前的'Availability:'后面有一个空格,因此$prep[1]将等于'Lorum Ipsum' - 具有前导空格。

要么在您的比较中更改您的explode()呼叫,要么使用trim()