代码:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if(strpos($str1,$str2)){
echo "Contains!";
}else{
echo "Not contains!";
}
?>
结果是 “不包含”,和我很好奇到底为什么? 可能是问题,“subi”在[0]的索引处,并且0返回false?任何想法?
代码:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if(strpos($str1,$str2)){
echo "Contains!";
}else{
echo "Not contains!";
}
?>
结果是 “不包含”,和我很好奇到底为什么? 可能是问题,“subi”在[0]的索引处,并且0返回false?任何想法?
你的代码是正确的。但问题就在这里:
说明:
strpos
函数返回一个包含字符串的索引。在你的情况下,它返回作为字符串的索引。 0表示编程中的错误。这就是为什么你的代码执行其他部分。
如果您的字符串位于1或2等位置,那么代码将正常工作。但是这将是错误的,因为匹配字符串在第零位。
对于未来的前景,你必须把价值在这样一个变量:
$str1 = "subidubidu";
$str2 = "subi";
$pos = strpos($str1, $str2);
if ($pos != '' || $pos !== false) {
echo 'Found it';
} else {
echo 'Not found.';
}
<?php
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2)!==false) {
echo "Contains!";
} else {
echo "Not contains!";
}
您正在寻找这样---一旦发现,如果没有
谢谢我知道如何解决它,我只是想知道它背后的逻辑。 :) – JustMatthew
我希望它能帮助
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2) !== FALSE)
{
echo 'Found it';
}
else
{
echo 'Not found.';
}
如果你看一看的documentation假strpos返回的位置:
请注意我们使用===。简单==不会像预期的那样工作 ,因为'a'的位置是第0个(第一个)字符。
它说,你不能只用==
比较这是你在做什么,当你键入
if (strpost($str1, $str2)) { .. }
您需要使用===
。所以它看起来像:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2)!==false) {
echo "Contains!";
} else {
echo "Not contains!";
}
你读过[文档](http://php.net/manual/en/function.strpos。 PHP)? –