Aller au contenu

REGEXP multi-lignes en PHP


Sujets conseillés

Posté (modifié)

Hello,

Je coince ce matin sur la formulation d'une REGEXP pour remplacer une balise par une autre en prenant en compte le multi-ligne. J'ai bien vu qu'il y a avait une option PCRE_DOTALL pour dire que le point passe outre les retours chariot mais je ne sais pas comment l'intégrer dans l'expression.

Voici le code :

// replace
$fichnew = preg_replace("#<div id=\"tutu\">(.*)<\/div>#", "<h3>$1</h3>", $fich);

// ecriture du fichier modifié
if (strcmp($fichnew, $fich) != 0)
{
     ....

Si vous avez mieux en terme d'expression, n'hésitez pas Merci :)

Allez tant que j'y suis... comment ne pas être dépendant du nombre de blancs entre la balise DIV et ID= ?

Modifié par adn
Posté (modifié)

Merci TheRec,

J'ai essayé ta proposition mais c'est pas encore çà :

Il ne remplace plus que <div id="tutu"> par <h3> et pas le </div> par </h3>, curieux ??

Et il ne remplace que la première occurence de ce pattern. Je voudrais qu'ils les change toutes ....

Verrais-tu le souçi ?

Modifié par adn
Posté (modifié)

Sur la base de ton exemple, j'ai tatonné et j'ai trouvé çà qui marche:

$fichnew = preg_replace("/<div[\s]*id=\"tutu\">(.*?)<\/div>/smi", "<h3>$1</h3>", $fich);

Le ? débloque le pb du multi-ligne et je ne sais pas pourquoi ??

Modifié par adn
Posté (modifié)

Effectivement ça marche... à noter que ce n'est pas le "m" mais le "s" qui semble causer le problème chez moi :S

Si quelqu'un peut nous dire pourquoi, qu'il n'hésite pas :D

Modifié par TheRec
Posté

Bravo à TheRec... ce post mérite d'être épinglé :up:

Dan

Posté

Merci ;)

Le mérite en revient aussi aux commentaires/commentateurs du manuel PHP qui m'ont déjà maintes et maintes fois appris grandement ;)

Merci pour ma première épingle :fete:

  • 5 months later...
  • 7 years later...
Posté

Je sais que c'est un vieux topic mais pas grave.


Merci aux précédentes personnes qui se sont cassé les dents sur cette problématique je viens de passer 2h à chercher avant de trouver ma solution ici :)


Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...