Foreach strpos问题.在另一个字符串中查找字符串


Foreach strpos problem. Find string in another string

我正在努力让这个脚本发挥作用。

其思想是,如果输入字符串($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)) {

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

将其更改为

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

检查strpos如何工作

问题出在这里:

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

如果在索引0处找到字符串,这将导致if语句为false,则计算结果为0所以使用

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

<?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"关键字,并进行适当的检查。

希望能有所帮助。