Php 针对每个strpos问题。在另一个字符串中查找字符串

Php 针对每个strpos问题。在另一个字符串中查找字符串,php,arrays,foreach,substr,strpos,Php,Arrays,Foreach,Substr,Strpos,我正在努力让这个脚本正常工作 其思想是,如果输入字符串($query)不是以'/t'开头,并且包含一个$trigger字,则设置$error 我不能让这个工作,我不知道为什么 <?php $error = false; $triggers = array('sell', 'buy', 'trade', 'trading'); $query = 'buying stuff'; if (!empty($query)) { if (sub

我正在努力让这个脚本正常工作

其思想是,如果输入字符串
($query)
不是以
'/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";
    }

?>


这应该触发错误,但似乎不是。我做错了什么?

如果函数
strpos
找不到它返回的字符串
false
。还请注意,如果在最开始处找到搜索字符串,则返回
0

改变

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


请使用“
break
”关键字,并进行适当的检查

希望有帮助。

将此更改为

if (strpos($query, $trigger) !==false ) {
检查工作原理这里有一个问题:

  if (strpos($query, $trigger)) {
如果在索引0处找到字符串,则其计算结果为0,这将导致if语句为false 所以使用


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

什么的双引号?这不是一个标签,双引号或单引号没有任何区别。对不起,伙计们没有看到的性质slash@imoda我还会在
$error=true之后添加一个
中断
以保护一些不必要的迭代。
if (strpos($query, $trigger) !==false ) {
  if (strpos($query, $trigger)) {