0

2 つの文字列が一致するかどうかを判断しようとしていますが、それらを印刷しても同じですが、一致しないと表示されます。両方を文字列としてキャストしようとしましたが、「==」の代わりに「===」を使用してみましたが、どちらも問題を解決しませんでした...

   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」の前にスペースがあるため、「LorumIpsum」$prep[1]と等しくなります-先頭にスペースがあります。

explode()通話を変更するかtrim()、比較に使用してください。

于 2011-05-18T15:28:38.487 に答える