2011-07-01 10 views
2

私はこのスクリプトを動作させようとしています。strposに問題があります。別の文字列で文字列を見つける

アイデアは、入力文字列($query)'/t'で開始し、$error$trigger語のいずれかが含まれていない場合に設定されていることです。

私はこれを動作させることができません。理由はわかりません。

<?php 

    $error = false; 

    $triggers = array('sell', 'buy', 'trade', 'trading'); 

    $query = 'buying stuff'; 

    if (!empty($query)) { 

     if (substr($query, 0, 2) != '/t') { 

      foreach ($triggers as $trigger) { 

       if (strpos($query, $trigger)) { 

        $error = true; 
       } 
      } 
     } 
    } 

    if ($error) { 

     echo "fail"; 
    } 
    else { 

     echo "pass"; 
    } 

?> 

エラーが発生しているはずですが、そうではないようです。私は間違って何をしていますか?

答えて

5

関数strposが文字列を見つけられなかった場合は、falseを返します。また、最初に検索文字列が見つかった場合は、0が返されます。

変更

if (strpos($query, $trigger)) { 

if (strpos($query, $trigger) !== false) { 
+0

ありがとうございました!私はPHPのドキュメントでそれを逃した。 –

+0

@imoda不要な繰り返しを安全にするために、 '$ error = true;の後に' break'を追加します。 – Yoshi

0
<?php 

    $error = false; 

    $triggers = array('sell', 'buy', 'trade', 'trading'); 

    $query = 'buying stuff'; 

    if (!empty($query)) { 

     if (substr($query, 0, 2) != '/t') { 

      foreach ($triggers as $trigger) { 

       if (strpos($query, $trigger) !== false) { 

        $error = true; 
        break; 
       } 
      } 
     } 
    } 

    if ($error) { 

     echo "fail"; 
    } 
    else { 

     echo "pass"; 
    } 

?> 

に適切なチェックとともに、 "break" キーワードを使用してください。

希望します。

1

strposが問題である、ここで

+0

何のための二重引用符? Tab-charではありません – zerkms

+0

二重引用符または一重引用符では違いはありません。 –

+0

無関係な答え。 – DhruvPathak

1

をどのように動作するか

if (strpos($query, $trigger) !==false) { 

チェックアウトに変更し、この:

if (strpos($query, $trigger)) { 

文字列は、IF文を引き起こし、インデックス0、で発見された場合、これが0に評価に偽であること をご利用ください

(strpos($query,$trigger) !== false)

関連する問題