在另一个字符串中查找字符串

Mam*_*dou 1 php string

我有一个这样的字符串:$str1 = "mod 1 + mode 2 + comp 1 + toto".

我想测试是否mod 1$str1.我用过,strpos但这个功能没有帮助.

Gum*_*mbo 5

strpos返回以0开头的字符串中出现的位置,否则返回false.仅使用如下所示的布尔转换是一个常见的错误:

$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1")) {
    // found
}
Run Code Online (Sandbox Code Playgroud)

因为在这种情况下strpos将返回0.但0转换为布尔值为false:

var_dump((bool) 0 === false);  // bool(true)
Run Code Online (Sandbox Code Playgroud)

所以你需要使用严格的比较:

$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1") !== false) {
    // found
}
Run Code Online (Sandbox Code Playgroud)

这也是文档建议的内容:

警告此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.