PHP 中的变量比较问题


Variable comparison problem in 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
    }
    ...
$test后面

有一个空格 Availability : 也许你必须在编译之前修剪字符串。 像那样

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

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

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

更改explode()调用,或在比较中使用trim()