Expression régulière regex

Résolu
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010 - 6 oct. 2004 à 19:10
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010 - 7 oct. 2004 à 01:29
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

fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
7 oct. 2004 à 00:34
j'ai essayé ça:
$message=preg_replace("'%top.*?%%top'si","",$message);
et ça fonctionne
3
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
7 oct. 2004 à 01:29
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.
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 oct. 2004 à 21:08
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
0
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
6 oct. 2004 à 23:41
pour:
$message=ereg_replace("(?s)%mail(.+)%%mail","",$message);
réponse
ereg_replace(): REG_BADRPT: repetition-operator operand invalid

et idem pour split()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
7 oct. 2004 à 00:38
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
0
Rejoignez-nous