Expression régulière regex [Résolu]

Signaler
Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010
-
Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010
-
j'ai une variable ex:
$mavar="coucou
le monde
%top
salut cherie
%%top
comment
ça va
";

et je souhaites enlever tout ce qui est entre "%top" et "%%top"
sachant qu'il peut y avoir n'importe quel caractère y compris des retours à la ligne

j'ai essayé sur /www.regexlib.com la regex suivante: (?s)%mail(.+)%%mail
ça fonctionne sur leur site mais si je l'ntègre dans un
str_replace : ça ne fait rien
pre_replace ça me met un erreur Unknown modifier '%'

merci pour vos futures réponses,
ça fait un moment que je tourne en rond

5 réponses

Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010

j'ai essayé ça:
$message=preg_replace("'%top.*?%%top'si","",$message);
et ça fonctionne
Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010

alors le si à la fin veut dire selon : http://fr2.php.net/manual/fr/reference.pcre.pattern.modifiers.php

i (PCRE_CASELESS)
Effectue une recherche insensible à la casse.

s (PCRE_DOTALL)
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.

j'ai testé la formule sur www.regexlib.com: ça ne fonctionne pas

en bref c'est en posant les question qu'on arrive, des fois, à trouver les réponses

merci quand même à tous ceux qui ont fait de la transmission de pensées.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Pour le str_replace c'est normal, par contre tu peux essayer avec la fonction split()

Expressions régulières php

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010

pour:
$message=ereg_replace("(?s)%mail(.+)%%mail","",$message);
réponse
ereg_replace(): REG_BADRPT: repetition-operator operand invalid

et idem pour split()
Messages postés
124
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
12 février 2010

par contre je ne sais pas pourquoi ???
et pourquoi il faut mettre entre quote: ' avec si à la fin ?

j'ai pris cela dans la doc php fonction preg_replace: http://fr2.php.net/manual/fr/function.preg-replace.php
au moment où ils disent: conversion de html en txt
la première ligne enlève tout ce qui est entre balise <sript
et j'ai adapté à mon script