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

时间:2010-03-24 14:05:40

标签: php string

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

我想测试mod 1是否在$str1。我使用了strpos,但这个功能无济于事。

3 个答案:

答案 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;

关心!==这是重要的一部分。

请参阅http://php.net/manual/en/function.stripos.php