0

我试图确定两个字符串是否匹配,即使我打印出来它们是相同的,它仍然说它们不匹配。我尝试将它们都转换为字符串,并尝试使用'==='而不是'==',但都没有解决问题......

   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
    }
    ...
4

2 回答 2

3

$test 后面有一个空格Availability:也许你必须在组合之前修剪字符串。像那样

if(trim($orig->title) == trim($prep[1]))
于 2011-05-18T15:27:43.497 回答
0

我会说几乎可以肯定在字符串的开头和/或结尾有空格。

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

要么改变你的explode()电话,要么trim()在你的比较中使用。

于 2011-05-18T15:28:38.487 回答