2017-02-07 7 views
1

Код:

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

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

В результате «Не содержит», и мне интересно, почему именно? Может быть, проблема в том, что «subi» находится в индексе [0], а 0 возвращается с ложным? Есть идеи?

+0

Вы читали [документы] (http://php.net/manual/en/function.strpos. PHP)? –

ответ

1

У вас правильный код. Но проблема здесь:

Объяснение:

strpos функция возвращает индекс, содержащий строку. И в вашем случае он возвращает как индекс строки. И 0 означает ложь в программировании. Вот почему ваш код выполняет еще часть.

В случае, если ваша строка будет в положении 1 или 2 и так далее, тогда код будет работать нормально. Но это будет ложно, так как строка соответствия находится на 0-й позиции.

Для будущей перспективе, вы должны поместить значение в переменную, как это:

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

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

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

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

Вы ищете это --- StrPos возвращает позицию, если найден и ложь, если не

+0

Спасибо, я знал, как это решить, я просто хотел узнать логику этого. :) – JustMatthew

3

Я надеюсь, что это помогает

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

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

Если вы посмотрите на documentation:

Обратите внимание на использование ===. Просто == не будет работать так, как ожидалось, , потому что позиция 'a' была 0-ым (первым) символом.

Он утверждает, что вы не можете просто использовать == сравнение, которое является то, что вы делаете, когда вы набираете

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

Вам нужно использовать ===. Таким образом, это будет выглядеть так:

<?php 

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

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