2011-05-18 78 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()