preg_replace et les retours à la ligne ... [PHP] - PHP - Programmation
Marsh Posté le 26-04-2002 à 22:02:44
Je viens de trouver ... en fait il faut remplacer .*? par [^\]]* et voilà ...
Pattern final : '/(\[table=)([^\]]*)\]([^\]]*)(\[\/table\])/'
Marsh Posté le 26-04-2002 à 22:25:39
Par contre j'ai un autre pb : dès que j'intercale des balises ça ne marche plus correctement.
Par exemple ceci :
[table][/table]
Marche parfaitement, par contre ceci :
[table]
[title]TEST[/title]
[content]lalalal[/content]
[/table]
Ne me remplace pas [table] ni [/table] ... une petite astuce ?
Marsh Posté le 26-04-2002 à 22:55:39
j ai jamais pigé le preg_replace j utilise toujours le str_replace que je maitrise
Marsh Posté le 26-04-2002 à 22:58:42
Oui mais à ce stade, str_replace ne suffit plus. Je n'utilise pas preg_replace par masoshisme
Quelques liens :
Des RegEx tout prêts : http://www.phpinfo.net/?p=prog&rub=regex
Un petit tutorial : http://www.phpinfo.net/?p=articles&rub=regex
Marsh Posté le 26-04-2002 à 23:43:13
- Fred - a écrit a écrit : Ne me remplace pas [table] ni [/table] ... une petite astuce ? |
Essaie en mettant la lettre 's' après le dernier '/' de ton expression régulière. Cela permet que PCRE interprète le point comme tout les caractères, y compris le retour chariot alors quand sans le 's', le retour chariot n'y est pas.
Regarde ici :
http://www.php.net/manual/fr/pcre. [...] ifiers.php
Marsh Posté le 26-04-2002 à 21:46:32
Voici le pattern que j'utilise :
preg_replace('/(\[table=)([^\]]*)\](.*?)(
\[\/table\])/',<table><tr><td>\\2</td><
/tr><tr><td>\\4</td></tr></table> );
Ca marche assez bien quand j'utilise une ligne du type :
[table=TEST]blablabla[/table]
Par contre, si je mets un retour à la ligne entre les deux ça ne marche plus :
[table=TEST]
blablabla
[/table]
Comment faire en sorte que ça marche ?!?
---------------
"You know the name, You know the number..."