为什么$ str1不包含$ str2? (PHP strpos)

时间:2017-02-07 11:14:14

标签: php strpos

代码:

<?php
$str1 = "subidubidu";
$str2 = "subi";

if(strpos($str1,$str2)){
echo "Contains!";
}else{
echo "Not contains!";
} 
?> 

结果是“不包含”,我很好奇为什么呢? 可能是问题,“subi”在[0]的索引处,0返回false?有什么想法吗?

4 个答案:

答案 0 :(得分:3)

我希望它有所帮助

$str1 = "subidubidu";
$str2 = "subi";    

if (strpos($str1, $str2) !== FALSE)
    {
     echo 'Found it';
    }
    else
    {
     echo 'Not found.';
    }

答案 1 :(得分:2)

<?php

$str1 = "subidubidu";
$str2 = "subi";

if (strpos($str1, $str2)!==false) {
    echo "Contains!";
} else {
    echo "Not contains!";
}

你正在寻找这个--- strpos如果找到则返回位置,如果没有则返回false

答案 2 :(得分:1)

您的代码是正确的。但问题出在这里:

<强>解释

strpos函数返回包含字符串的索引。在您的情况下,它返回 0 作为字符串的索引。 0表示编程错误。这就是你的代码执行其他部分的原因。

如果您的字符串位于1或2的位置,依此类推,那么代码将正常工作。但是这将是错误的,因为匹配的字符串位于第0位。

对于未来的前景,您必须将值放在这样的变量中:

$str1 = "subidubidu";
$str2 = "subi";    
$pos = strpos($str1, $str2);

if ($pos != '' || $pos !== false) {
   echo 'Found it';
} else {
   echo 'Not found.';
}

答案 3 :(得分:0)

如果您查看documentation

  

注意我们使用===。简单地==不会按预期工作   因为&#39; a&#39;的位置是第0个(第一个)角色。

它声明您不能只使用==比较,这是您在键入时所做的事情

if (strpost($str1, $str2)) { .. }

您需要使用===。所以它看起来像:

<?php

$str1 = "subidubidu";
$str2 = "subi";

if (strpos($str1, $str2)!==false) {
    echo "Contains!";
} else {
    echo "Not contains!";
}