Artisan Développeur

Qualité, amélioration continue, agilité.

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.

Leave a reply

Your email address will not be published.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.