Prob ereg

jonguerre Messages postés 8 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 16 janvier 2004 - 24 juil. 2003 à 11:02
cs_str Messages postés 20 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 11 mai 2007 - 24 juil. 2003 à 22:48
Salut a tous j ai un ptit probleme avec les expressions regulieres alors voila :

j ai un fichier txt qui contient :

<MOD_WORD id="0"><![CDATA[texte hufdjvb]]></MOD_WORD>
<MOD_WORD id="1"><![CDATA[]]></MOD_WORD>
<MOD_WORD id="2"><![CDATA[]]></MOD_WORD>
<MOD_WORD id="3"><![CDATA[]]></MOD_WORD>

j aimerais extraire ce qui ce trouve entre CDATA[] pour chaque id de MOD_WORD.

j ai fais ce ci pour MOD_WORD id="0" :

$mod_word = ereg("<MOD_WORD id="0"><!\[CDATA\[(.*)\]\]></MOD_WORD>",$contents,$regs);

Mais le probleme c qu'il m affiche tout depuis la premiere balise MOD_WORD jusqu'a la derniere.

Alors si q q un a une petite idee...

Merci D'avance

John

2 réponses

defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
24 juil. 2003 à 19:57
esayons autrement
déja tu lis ton fichier ligne par ligne
$fp = fopen("fichier.txt", "r");
while (!feof($fp))
{
$ligne = fgets($fp,4096);
//ici tu n'a plus qua récupérer le contenu avec ton expression
}

voyons..
//<MOD_WORD id="0"><![CDATA[texte hufdjvb]]></MOD_WORD>
strstr() Recherche le premier caractère '[' dans la chaîne et affiche le reste de la chaîne y compris le '['.

$reste = strstr ($ligne, "TA");

d'ou on a TA[texte hufdjvb]]></MOD_WORD>

$reste = str_replace("TA[","",$reste);

on a texte hufdjvb]]></MOD_WORD>
et enfin
$reste = str_replace("]]></MOD_WORD>","",$reste);

ce qui donne :

$fp = fopen("fichier.txt", "r");
while (!feof($fp))
{
$ligne = fgets($fp,4096);
$reste = strstr ($ligne, "TA");
$reste = str_replace("TA[","",$reste);
$reste = str_replace("]]></MOD_WORD>","",$reste);
echo"$reste";
}
fclose($fp);

voila normalement sa marche je te garantie rien mais on peut toujours bricoler quelque chose (ps : si sa marche pas dis le moi je peut ten écrire le meme résultat mais d1 autre forme en utilisant substr();

voila ..
\->Bye Defkrie !?!
0
cs_str Messages postés 20 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 11 mai 2007
24 juil. 2003 à 22:48
Salut,

preg_match_all("/<MOD_WORD id="+[0-9]+"><!\[CDATA\[(.*)\]\]><\/MOD_WORD>/Us",$contents,$regs);

normalement, si tout va bien
$regs[1][0] sera égal à ton id=0, $regs[1][1] à ton id=1, etc jusqu'à ce que le masque ne soit plus vérifier.

Pour plus d'infos sur la fonction :
http://dev.nexen.net/docs/php/annotee/function.preg-match-all.php

Des exemples à l'adresse :
http://www.phpinfo.net/astuces/astuces104.html

Plus d'infos à l'adresse :
http://www.commentcamarche.net/php/phpreg.php3

sEe YoU

[StR]
0
Rejoignez-nous