par
Ryle » 16 mai 2009, 16:30
Ta chaine est effectivement un peu trop complexe pour pouvoir utiliser explode() directement... il te faudrait passer par une expression régulière pour identifier les chaines "couleur/prénom nom" à partir desquelles tu pourras ensuite plus facilement extrêre la couleur en fonction du nom. Par exemple :
preg_match_all("#(.*)/(.* [^ ]*) #U", $taChaine, $match);
te donnera un tableau $match contenant ces chaines dans $match[0], mais également toutes les couleurs indexées dans $match[1] et les noms dans $match[2]. Reste plus qu'à manipuler le tableau pour retrouver les infos qu'il te faut...
J'ai fait une expression assez basique : n'importe quels caractères (la couleur), un "/", n'importe quels caractères (le prénom), suivi d'un espace, n'importe quels caractères jusqu'au prochain espace (le nom), suivi d'un espace.
Il faudra sans doute l'améliorer si tu as des noms avec des espaces (particule, etc.)
Ta chaine est effectivement un peu trop complexe pour pouvoir utiliser explode() directement... il te faudrait passer par une expression régulière pour identifier les chaines "couleur/prénom nom" à partir desquelles tu pourras ensuite plus facilement extrêre la couleur en fonction du nom. Par exemple :
[php]preg_match_all("#(.*)/(.* [^ ]*) #U", $taChaine, $match);[/php]te donnera un tableau $match contenant ces chaines dans $match[0], mais également toutes les couleurs indexées dans $match[1] et les noms dans $match[2]. Reste plus qu'à manipuler le tableau pour retrouver les infos qu'il te faut...
J'ai fait une expression assez basique : n'importe quels caractères (la couleur), un "/", n'importe quels caractères (le prénom), suivi d'un espace, n'importe quels caractères jusqu'au prochain espace (le nom), suivi d'un espace.
Il faudra sans doute l'améliorer si tu as des noms avec des espaces (particule, etc.)