我有一个这样的字符串:$str1 = "mod 1 + mode 2 + comp 1 + toto"
。
我想测试mod 1
是否在$str1
。我使用了strpos
,但这个功能无济于事。
答案 0 :(得分:5)
strpos
返回以0开头的字符串中出现的位置,否则返回 false 。仅使用如下所示的布尔转换是一个常见的错误:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1")) {
// found
}
因为在这种情况下strpos
将返回0.但0转换为布尔值 false :
var_dump((bool) 0 === false); // bool(true)
所以你需要使用严格的比较:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1") !== false) {
// found
}
这也是文档建议的内容:
警告此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE,例如0或“”。有关详细信息,请阅读Booleans部分。使用
===
operator测试此函数的返回值。
答案 1 :(得分:1)
您可以使用strstr功能。
$str1 = "mod 1 + mode 2 + comp 1 + toto";
$str2 = "mod 1";
if(strstr($str1,$str2) !== false)
echo "Found $str2 in $str1\n";
答案 2 :(得分:0)
if(stripos($str,'mod 1')!==false) $hasmod1 = true;
else $hasmod1 = false;
关心!==
这是重要的一部分。