SOS : expression régulière avec EREGI_REPLACE() - PHP - Programmation
Marsh Posté le 18-04-2006 à 01:45:28
(.*) bouffe tout ce qu'il peut, aussi quand tu en mets plusieurs tu peut avoir des problèmes.
Essaye:
$texte = ereg_replace ("mods/dossiers/([^_]+)_([0-9]+).html", "mobile/dossier.php?id=\\2", $texte);
Si je fais de mauvaises suppositions sur le 1er argument, essaye preg_replace avec:
(.+?)
qui au lieu de manger tous les caractères possibles, ne prends que le minimum nécessaire.
Exemple:
$texte = preg_replace ("@mods/dossiers/(.+?)_([0-9]+).html@", "mobile/dossier.php?id=\\2", $texte);
Marsh Posté le 18-04-2006 à 09:12:51
COOL !!! la première fonctionne !!!
Merci beaucoup nargy, je suis trop content !
David
Marsh Posté le 18-04-2006 à 09:32:19
DHARIUS : J'ai un autre PB...
HA...............
J'ai un autre PB : parfois il n'y a pas le morceau de chaine "mods/dossiers/", alors, j'ai essayé avec :
$texte = ereg_replace ("([^_]+)_([0-9]+).html", "dossier.php?id=\\2", $texte);
Mais là ca marche plus du tout ! ?
David
Marsh Posté le 18-04-2006 à 09:33:08
nargy a écrit : (.*) bouffe tout ce qu'il peut, aussi quand tu en mets plusieurs tu peut avoir des problèmes.
|
MERCI !!!
HA...............
J'ai un autre PB : parfois il n'y a pas le morceau de chaine "mods/dossiers/", alors, j'ai essayé avec :
$texte = ereg_replace ("([^_]+)_([0-9]+).html", "dossier.php?id=\\2", $texte);
Mais là ca marche plus du tout ! ?
David
Marsh Posté le 18-04-2006 à 10:20:21
Dharius, stp, je veux bien te corriger une regexp, surtout que l'erreur était classique, mais tu devrais quand même faire un petit effort en ouvrant une doc, et en faisant quelques essais avant de poster.
Marsh Posté le 18-04-2006 à 11:09:54
C'est comme ça que je me rends bien compte qu'il n'a même pas pris le temps de lire la doc:
http://fr.php.net/manual/fr/function.ereg-replace.php
Pour les expressions régulières, il y a pletore de tutos sur le web.
Marsh Posté le 18-04-2006 à 11:13:54
re,
Si, c'est le premier site que je suis passé voir, simplement il y a ceux qui comprennent et les autres...
Marsh Posté le 18-04-2006 à 11:19:37
ha ok, une copie de la doc officielle sur le expression régulières Perl:
http://www.hmug.org/man/1/perlretut.php
Si ça peut t'aider.
Marsh Posté le 18-04-2006 à 00:30:00
Bonjour,
Ca fait des heures que j'essaie de remplacer dans nu texte à la volée plusieurs liens du style
"mods/dossiers/XXX_325.html"
en
"mobile/dossier.php?id=325" mais je n'arrive ppas à trouver l'expression régulière correcte.
J'ai essayé :
$texte = ereg_replace ("mods/dossiers/(.*)_(.*).html", "mobile/dossier.php?id=\\2", $texte);
mais ca marche pas : tous le texte et autres liens situés entre le 1er (dont le 1er) et le dernier lien disparaissennt et je n'obtien que le dernier lien qui s'affiche...
Si un pro peut m'aider ca serait cool !!
Merci !
David