Page 1 sur 1
Extraction d'une sous chaine
Publié : 15 déc. 2006, 14:58
par guilhem_mdg
Bonjour,
Je souhaite renvoyer dans un tableau toutes les chaines qui se trouvent entre
dans un texte...
Comment faire en PHP ?
Merci.
Code : Tout sélectionner
eregi ("aa(.*)cc" , "aabbcc - aaXXcc" , $Resultat);
echo $Resultat[1];
Le résultat sera sans équivoque :
bbcc - aaXX
Et ben moi je souhaite récupérer bb et XX !!
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Publié : 15 déc. 2006, 19:54
par martin
essaie :
Code : Tout sélectionner
<?php
$out = array();
$nb = preg_match_all('/aa(.+?)cc/', 'aabbcc - aaXXcc', $out);
if ($nb > 0) print_r($out[1]);
else 'pas trouvé';
?>
la clé de la réponse c'est le '?' (tu peux remettre un '*' à la place du '+', le plus '+' oblige à au moins un caractère)
Le masque fonctionne peut être avec les fonction ereg, je préfère les preg (PCRE, i.e. compatible perl) réputés plus rapides.
http://fr.php.net/manual/fr/reference.p ... syntax.php
Publié : 18 déc. 2006, 10:21
par guilhem_mdg
Merci 1000fois Martin, ton code marche nickel c exactement ce que je cherchais...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Publié : 18 déc. 2006, 10:56
par guilhem_mdg
Par contre, pourquoi là il me renvoie 2 ?
Code : Tout sélectionner
$out = array();
$nb = preg_match_all('/aa(.+?)cc/', 'aabbcc', $out);
echo count($out);
????
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Publié : 18 déc. 2006, 11:10
par martin
$out contient 2 éléments, $out[0] les résultats du masque complet, $out[1] les résultats du 1er sous-masque (la parenthèse).
La doc ->
http://fr3.php.net/manual/fr/function.p ... ch-all.php
Publié : 18 déc. 2006, 12:21
par guilhem_mdg
Ah d'accord...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7