Extraction d'une sous chaine

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Extraction d'une sous chaine

Message 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
Cordialement.
Guilhem.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message 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
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message 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
Cordialement.
Guilhem.
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message 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
Cordialement.
Guilhem.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message 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
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message 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
Cordialement.
Guilhem.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités