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

Code : Tout sélectionner

<debut>chaine 1</fin>
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... :D

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);
???? :roll:

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... :wink:

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