Tom's Guide > Forum > Programmation > [php] regex sur plusieurs lignes

[php] regex sur plusieurs lignes

Forum Programmation : [php] regex sur plusieurs lignes

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

J'ai une regex que voici :

Citation :


preg_match('#<b>Options:&nbsp;</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:

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

un:

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


avant le preg_match devrait aller

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

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/P [...] 0Sheet.pdf

Oui je sais je suis bon ;)

Répondre à n1kk0

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:

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

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

merci de vos réponses

Répondre à 2Dpix
Tom's Guide > Forum > Programmation > [php] regex sur plusieurs lignes
Aller à :

Il y a 1256 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens