Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.php : Regexp et retour à la ligne

Posté par Dinofly (page perso, ) le 09 avril 2005
Bonjour,



Je suis ultra-débutant en expressions régulières et j'aimerais faire quelque chose qui me semblait simplissime au premier abord: remplacer une chaîne quelconque qui se trouve entre deux autres chaînes bien définies.



En gros:

chaîneDebut.*chaîneFin



Le problème c'est que dans la chaîne quelconque, il y a des retours à la ligne. Et du coup rien n'est remplacé car le point représente tout sauf un retour à la ligne.



Là je me suis dit: "oh c'est rien, juste un petit \n à coller !".

Ben non :-/



Je n'ai absolument aucune idée de comment représenter ce curieux retour à la ligne qui n'est pas pris en compte par \n dans mon expression régulière.



D'après Google, il y a pas mal de monde qui a déjà rencontré ce problème. Mais je n'y ai trouvé aucune solution. Au moins je me sens moins seul :-)



Pour info la chaîne en question vient d'un simple fichier texte récupéré avec file().



Merci pour votre aide.

> Lire le message (3 commentaires, moyenne: 3).  

Vous avez demandé le commentaire #558322.

DOT_ALL

Posté par SamG () le 09/04/2005 à 18:09. (lien). Évalué à 4.

Salut,

Normalement, il faut utiliser DOT_ALL qui permet au caractère "." de matcher aussi "\n".
Donc ça doit être quelque chose du genre "/chaîneDebut.*chaîneFin)/s"

cf http://fr3.php.net/manual/en/reference.pcre.pattern.modifiers.php(...)