Expression régulières ...

Adilis
Invité n'ayant pas de compte PHPfrance

10 mars 2009, 17:12

Bonjour à tous,
J'ai beau me debrouiller en php, les expressions régulières restent un mystère pour moi,
J'ai un fichier texte que je sois parser, voici un exemple :
#010550
<Design=Shoes adidas jucuri>
<Description=Shoes adidas jucuri>
#0-1 0884
<Design=Shoes adidas ingia cfi>
<Description=Shoes adidas ingia cfi>
et j'aimerais récuperer les numéros suivant le #, voici mon expression, mais comme vous pouvez le deviner elle plante pour le deuxieme numéro, en fait j'aimerais inclure les caracteres spéciaux comme l'epace, le point et les tirets, la voici :
preg_match_all( '`#([[:alnum:]]+)([^#]*)`si', $contents, $items, PREG_SET_ORDER );
Si quelqu'un a la solution, ^^en vous remerciant

Mammouth du PHP | 2937 Messages

10 mars 2009, 17:23

Essaie cette expression régulière :

Code : Tout sélectionner

/^#[-[:space:]0-9]+$/m

Adilis
Invité n'ayant pas de compte PHPfrance

10 mars 2009, 17:53

Je suis meme pas capable de dire si je l'ai bien ecrit, mais en tout cas, ca ne me renvoie plus rien :
preg_match_all( '/^#[-[:space:]0-9]+$/m', $contents, $items, PREG_SET_ORDER );

Mammouth du PHP | 2937 Messages

10 mars 2009, 17:54

Essaie en remplaçant les guillemets simples par des guillemets doubles (j'ignore si ç'a une influence, mais on ne sait jamais...).

Petit nouveau ! | 6 Messages

10 mars 2009, 20:38

Bonsoir,

avec ce pattern '/#[- .0-9]+/' tout simplement, ça marche

Code : Tout sélectionner

$haystack = <<<EOT #010550 <Design=Shoes adidas jucuri> <Description=Shoes adidas jucuri> #0-1 0884 <Design=Shoes adidas ingia cfi> <Description=Shoes adidas ingia cfi> EOT; $pattern = '/#[- .0-9]+/'; $res = array(); preg_match_all($pattern, $haystack, $res); print_r($res);
le code ci dessus affiche :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => #010550 [1] => #0-1 0884 ) )

Invité
Invité n'ayant pas de compte PHPfrance

17 mars 2009, 09:02

Ca marche par contre les lettres ne sont plus prises en compte. il faut rajouter le a-Z mais je ne sais pas comment !

ViPHP
ViPHP | 5924 Messages

17 mars 2009, 10:30

Tout simplement :

Code : Tout sélectionner

[- .0-9A-Za-z]

Eléphant du PHP | 170 Messages

17 mars 2009, 11:00

Bonjour,
il faut rajouter le a-Z mais je ne sais pas comment !
il y a le manuel : http://fr3.php.net/manual/fr/regexp.reference.php

mais pour tout comprendre ( ou essayer :) ) : http://lumadis.be/regex/tuto_pcre.php