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

The code:

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

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

The result is "Not contains", and I'm curious about why exactly? May it be the problem, that "subi" is at the index of[0], and 0 returns with false? Any idea?

You code is correct. But the problem is here:

Explanation:

strpos function return the index of containing string. And in your case, it is returning 0 as index of string. And 0 means false in programming. That's why your code executing else part.

In case, if your string will be at the position of 1 or 2 and so on then code will work fine. But this will be false as the matching string is at 0th position.

For future prospect, you have to put the value in a variable like this:

$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!";
}

You are looking for this --- strpos returns position if found and false if not

I hope it helps

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

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

If you take a look at the documentation:

Note our use of ===. Simply == would not work as expected because the position of 'a' was the 0th (first) character.

It states that you can't just use the == comparison which is what you are doing when you type

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

You need to use the ===. So it would look like:

<?php

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

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