Probleme de PREG_REPLACE [resolu] - PHP - Programmation
Marsh Posté le 03-03-2004 à 12:52:38
En gros tu veux faire de l'url rewriting ?
Peux-tu mettre un exemple d'url à modifier et modifée ?
Marsh Posté le 03-03-2004 à 12:55:40
c'est pas tout a fait de l'URL rewriting.
je veux modifier la forme d'une URL, contenue dans l'enregistrement d'une table.
mon enregistrement contient par exemple
index.php?var=4 et la transformer dans le document renvoyé par le serveur web en var-4.html
Marsh Posté le 03-03-2004 à 12:56:17
Essaie ça:
$row['champ'] = preg_replace("index\.php\?variable=(.*?)","variable-\$1.htm",$row['champ']);
Marsh Posté le 03-03-2004 à 12:56:50
Je pense qu'il faudrait que tu lises plus en profondeur la documentation PHP : http://fr2.php.net/manual/fr/ref.pcre.php
En fait en gros, il manque les / en début et fin d'expression régulière, le . et ? dans index.php?variable ne sont pas échappés. Le $ de $1 dans la chaîne de remplacement doit être aussi échappé.
Marsh Posté le 03-03-2004 à 12:59:25
Suite à Tentacle:
$row['champ'] = preg_replace("/index\.php\?variable=(.*?)/","variable-\$1.htm",$row['champ']);
Marsh Posté le 03-03-2004 à 13:06:28
aucune des 2 solutions ne fonctionne, je me retrouve avec un truc du genre
var- .html4 le 4 n'est pas au bon endroit
Marsh Posté le 03-03-2004 à 13:11:41
toujours pas.
dsl
je dois etre une buse, mais ca marche pas !!
rahhhhh
Marsh Posté le 03-03-2004 à 13:12:39
Hum ... lol enlève moi ce ? dans .*? car il va prendre le moins possible donc il ne prendra pas le nombre et donc il ne serra pas remplacé. Alors soit tu mets (.*) soit tu mets un $ avant le / à la fin.
Marsh Posté le 03-03-2004 à 13:16:45
en mettant (.*) j'ai recupere ca
var-4
mais il manque le .html
desl je fais tous mes efforts...
Marsh Posté le 03-03-2004 à 13:19:57
$row['body'] = preg_replace("/critic\.php\?filmid=(.*)/","critique-$1.html",$row['body']);
Marsh Posté le 03-03-2004 à 13:37:23
Bah ça marche aussi :
echo preg_replace("/critic\.php\?filmid=(.*)/","critique-$1.html","critic.php?filmid=4" );
renvoie critique-4.html
Marsh Posté le 03-03-2004 à 13:55:38
en effet, ca marche, mais le prob c'est que je ne sais pas ou se trouve le texte en question dans mon enregistrement. il peut etre situe n'iporte ou.
je ne peux donc pas utiliser le echo mais plutot
$row['body'] = ....
Marsh Posté le 03-03-2004 à 13:59:10
ben un enregistrement peut contenir
Code :
|
et je veux que le serveur PHP retourne
je vous propose de lire la critique critique-12.html
voila, j'espere que je suis clair.
Marsh Posté le 03-03-2004 à 14:01:51
Essaye:
$row['body'] = preg_replace("/critic\.php\?filmid=([0-9]+)/","critique-$1.html",$row['body']);
Marsh Posté le 03-03-2004 à 14:04:35
sebnutt a écrit : en effet, ca marche, mais le prob c'est que je ne sais pas ou se trouve le texte en question dans mon enregistrement. il peut etre situe n'iporte ou. |
le echo était là pour le test ... mais si echo affiche le bon résultat, je vois pas pourquoi ça changerait avec $row['body'] =
Marsh Posté le 03-03-2004 à 14:05:10
YEESSSSSSS ca marche !!!!!
un supergrand merci a toi !
et bravo !
Marsh Posté le 03-03-2004 à 14:06:17
T'as fait un echo $row['body'];
Ou alors t'as des vieux caractères slashés automatiquement par mysql ou php. Si c'est le cas stripslashes($row['body']).
Marsh Posté le 03-03-2004 à 14:06:58
ReplyMarsh Posté le 03-03-2004 à 14:14:19
j'avais pas pensé à faire ça, alors que c'est exactement la foirmule que j'utilise dans mon htacces d'URL rewriting, chuis trop nul..
Marsh Posté le 03-03-2004 à 12:44:28
salut a tous
je voudrais recuperer un champ de table et le modifier avec un preg_replace.
donc je recupere le champ avec $rox['champ'], jusdque la pas de soucis.
c'est le preg_replace qui marche pas.
$row['champ'] = preg_replace("index.php?variable=(.*?)","variable-$1.htm",$row['champ']);
où est l'erreur ??
Message édité par sebnutt le 03-03-2004 à 14:05:36