strpos tips, if(strpos($haystack , $needle)) piège :)
Une astuce,
un retour de galère, je travaille sur un parser pour du xml, je cherche certaines occurrences, comme « ![CDATA ».
Je faisais simplement un
[pastacode lang= »php » message= » » highlight= » » provider= »manual »]
if( strpos( "!CDATA[", $monXml ) ){
/* do something */
}
[/pastacode]
Et jamais la condition n’était valide… Je retourne donc sur la doc php, lire en entier la page strpos :
http://au1.php.net/manual/fr/function.strpos.php
Strpos, retourne la position de $needle, et la première position commence à 0.
Si $needle se trouve au début de la chaîne, strpos retourne 0. Ce qui donne :
[pastacode lang= »php » message= » » highlight= » » provider= »manual »]
if(0){ /* ... */ }
[/pastacode]
La solution est toute simple :
[pastacode lang= »php » message= » » highlight= » » provider= »manual »]
if( strpos( "!CDATA[", $monXml ) !== false){
/* do something */
}
[/pastacode]
Avec l’opérateur === ou !== je vais vérifier si c’est vraiment false.
tags: strpos error, strpos ne fonctionne pas, mauvais retour strpos, strpos always false.