Search code examples
phpstrpos

Why does $str1 not contain $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?


Solution

  • 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.';
    }