probleme de pattern et ereg

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 16:36

bonjour a tous

desole ,j ai du mal avec les patterns.

j ai un fichier texte bien delimite avec le no de facture (toujours 5 chiffres) et le mot FACTURATION.
clairement delimite et se repete X fois.
voila ce que j ai fait mais ca fonctionne pas
je suis alle sur les doc mais cest vraiment obscure pour moi!!! :oops:
if (ereg ("(^([1-9]|[1-9]|[0-9]|[1-9]|[0-9])$.(^(FACTURATION)$))", $texte, $regs)) 
{
print_r($regs);
}
else
{
echo "pas bien";
}
merci pour vos aides! :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juin 2007, 17:06

Effectivement ton expression comporte quelques erreur, nottament dans l'utilisation de "^" et "$". Ces caractères représentent le début et la fin de la chaine, il doivent donc être placé en début et fin de ton pattern mais ne renverront pas de résultat si ta chaine ne commence ou ne fini par le pattern cherché (même s'il est écrit en gros au milieu :))

Par ailleurs le pipe "|" est un "OU" logique qui te permet d'insérer plusieurs possibilités en un même endroit : a|b <=> caractère a ou caractère b .. du coup [1-9]|[1-9] signifierait un caractère de 1 à 9, ou un caractère de 1 à 9 ;)

As tu quelques exemples concrets de la chaine à retrouver ? Si le format est "0000FACTURATION" alors tu peux simplement faire un masque du genre : /[0-9]{5}FACTURATION/
soit 5 chiffres de 0 à 9 suivi de la chaine "FACTURATION" en toutes lettre et majuscules, située n'importe où dans la chaine source (début, milieu ou fin) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 17:23

:D k du coup je passe a pregmatchall

mon fichier texte est organise ainsi

78454 : facture de
blablah
FACTURATION

45897: facture de
blablah
FACTURATION

et ainsi de suite

avec ton exemple:

preg_match_all("/[0-9]{5}.FACTURATION/" ,$texte,$matches);

ja i mis le point entre les deux je sais pas quoi mettre.

je ne trouve pas de doc clair a ce sujet.

merci pour ta reponse. :D

Invité
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 18:03

cj ai trouve ca

ca al air de fonctionne.
merci pour l aide; :D

preg_match_all("/[0-9]{5}(.*)FACTURATION/",$texte,$matches);