2

このスクリプトを機能させようとしています。

アイデアは、入力文字列がAND($query)で始まらない場合、単語の 1 つが含まれている場合、anが設定されるということです。'/t'$trigger$error

これを機能させることができず、その理由がわかりません。

<?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";
    }

?>

それはエラーを引き起こしたはずですが、そうではないようです。私は何を間違っていますか?

4

4 に答える 4

5

関数strposが文字列を見つけられない場合は、 を返しますfalse。また、検索文字列が最初に見つかった場合は a0が返されることに注意してください。

変化する

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

if (strpos($query, $trigger) !== false) {
于 2011-07-01T06:27:22.430 に答える
1

これをに変更

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

strposの仕組みを確認する

于 2011-07-01T06:28:00.257 に答える
1

ここに問題があります:

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

文字列がインデックス 0 で見つかった場合、これは 0 に評価され、IF ステートメントが false になるため、使用します

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

于 2011-07-01T06:28:56.323 に答える
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適切なチェックとともに、「 」キーワードを使用してください。

それが役に立てば幸い。

于 2011-07-01T06:27:54.267 に答える