2017-02-07 1 views
1

Le code:

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

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

Le résultat est "ne contient pas", et je suis curieux de savoir pourquoi exactement? Est-ce que ça peut être le problème, que "subi" est à l'index de [0], et 0 retourne avec false? Une idée?

+0

Avez-vous lu les documents [] (http://php.net/manual/en/function.strpos. php)? –

Répondre

1

Votre code est correct. Mais le problème est ici:

Explication:

fonction strpos retourne l'index de chaîne contenant. Et dans votre cas, il retourne comme index de chaîne. Et 0 signifie faux dans la programmation. C'est pourquoi votre code exécute une autre partie. Dans le cas, si votre chaîne sera à la position 1 ou 2 et ainsi de suite, le code fonctionnera correctement. Mais ce sera faux car la chaîne correspondante est à la 0ème position.

Pour perspective d'avenir, vous devez mettre la valeur dans une variable comme ceci:

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

Vous recherchez ce --- strpos renvoie la position si trouvé et false sinon

+0

Merci je savais comment le résoudre, je voulais juste connaître la logique derrière cela. :) – JustMatthew

3

J'espère que cela aide

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

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

Si vous jetez un oeil à la documentation:

Notez notre utilisation de ===. Simplement == ne fonctionnerait pas comme prévu car la position de 'a' était le 0ème (premier) caractère.

Il indique que vous ne pouvez pas utiliser la comparaison == qui est ce que vous faites lorsque vous tapez

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

Vous devez utiliser le ===. Donc, cela ressemblerait à:

<?php 

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

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