Votre question

[php] regex sur plusieurs lignes

Tags :
  • Match
  • Programmation
Dernière réponse : dans Programmation
Anonyme
8 Janvier 2007 19:37:08

Bonjour,

J'ai une regex que voici :
Citation :

preg_match('#<b>Options: </b></td><td class=\'ann_cell\' width=\'363\'>(.+)</td>#', $source, $options);


Lorsque dans $source le résultat de la regex est sur une seule ligne, ça marche, mais quand c'est sur plusieurs lignes, çela ne marche pas, je dois ajouter quelquechose, si oui quoi ?
Je suis pas trés fort en regexs..

:hello: 

Autres pages sur : php regex plusieurs lignes

Anonyme
8 Janvier 2007 20:27:52

up!
8 Janvier 2007 20:48:42

un:
  1. $source = str_replace ("\n", "", $source);

avant le preg_match devrait aller
Contenus similaires
9 Janvier 2007 00:11:56

Ou sinon tu ajoutes dans ta regexp, aux endroits ou tu peux avoir des retours chariots ou des espaces \s* ce qui signifie n'importe quelle quantité de n'importe quel caractère d'espacement.

Et puis allez, comme nous parlons du sujet : une petite cheat sheet bien pratique : http://www.phpguru.org/downloads/PCRE%20Cheat%20Sheet/P...

Oui je sais je suis bon ;) 
a c 145 L Programmation
9 Janvier 2007 12:59:57

Ceci est un problème fort connu, à savoir que le "." dans une regexp prend tout sauf les retours de lignes.
Heureusement, il y a la parade qui est le flag "s":
Citation :
Avec cette option, le méta-caractère point (.) remplace n'importe quel caractère, y compris les nouvelles lignes. Sans cette option, le caractère point ne remplace pas les nouvelles lignes. Cette option est équivalente à l'option Perl /s. Une classe de caractères négative telle que [^a] acceptera toujours les caractères de nouvelles lignes, indépendamment de cette option.

Utilise donc:
  1. preg_match('#<b>Options: </b></td><td class=\'ann_cell\' width=\'363\'>(.+)</td>#/s', $source, $options);
Anonyme
9 Janvier 2007 18:51:05

merci de vos réponses
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS