Page 1 sur 1

Expression réqulières

Posté : 21 avr. 2009, 08:49
par orgerix
Bonjour,

J'ai un texte et j'aimerai obtenir la parti du texte qui se trouve entre chaines. J'aimerai me débrouiller avec les expressions régulières pour (enfin) apprendre à les maitriser, mais bon, c'est pas gagné...

VOila, dans mon texte, je veux prendre ce qui se trouve entre textePage[0]['Texte'] et textePage[1] = new Array();

J'ai donc fait ca
ereg('^textePage\[0\]\[\'Texte\'\](.+)textePage\[1\] = new Array();$',$page,$match);
Mais mon expression ne détecte rien du tout... $match reste vide.

Posté : 22 avr. 2009, 11:45
par Ryle
Le principe des expressions régulière est assez simple, il te faut constituer un masque, plus ou moins fin, qui va correspondre très exactement à la chaine sur laquelle tu travailles.

Il faut pour cela faire attention aux caractères spéciaux des expressions. Ainsi, tu as bien pensé à protéger les crochets avec un antislash, mais tu as oublié de le faire pour les parenthèses du Array ;)
$page = "textePage[0]['Texte'] et textePage[1] = new Array();";

ereg('^textePage\[0\]\[\'Texte\'\](.+)textePage\[1\] = new Array();$',$page,$match);
print_r($match); // => pas de résultat

ereg('^textePage\[0\]\[\'Texte\'\](.+)textePage\[1\] = new Array\(\);$',$page,$match);
print_r($match); // => Array ( [0] => "textePage[0]['Texte'] et textePage[1] = new Array();" [1] => " et ")

Posté : 22 avr. 2009, 20:33
par orgerix
Arf... J'avais oublié les parenthèses...

Mais bon, ca marche pas plus...

Mais ca c'est parce que je me suis trompé dans mon masque... J'ai fais le test avec une chaine plus simple et ca marche. Je vais m'y remettre pour voir ce qui va pas.

EDIT : C'est bon. La chaine était à l'interieur du texte, donc pas de ^ et de $ Ca finira par rentrer un jour :D