Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2006, 19h09   #1
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
Par défaut recherche et replacement dans une chaine de caractère

bonjour,

j'ai une chaine de caractère qui a ce modèle là :
"fiche.php?id=45"

je voudrais la remplacer par
"fiche-45.html"

le problème c'est que le chiffre varie, donc je ne sais pas comment faire. c'est pour faire de la réécriture de lien.

il faudrait une fonction genre super_str_replace("fiche.php?id=*","fiche-*.html") ou * symboliserait un chiffre quelconque.

avez-vous une idée?

merci de votre aide.
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 19h13   #2
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
preg_replace, of course !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 19h31   #3
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
voir meme un preg_match...

Code :
1
2
3
 
preg_match("#fiche\.php\?id=([0-9]*?)#", $url, $matches);
new_url = 'fiche-'.$matches[1].'.html';
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 19h38   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
$out = preg_replace('#fiche\.php\?id=([0-9]+)#', 'fiche-$1.html', $in);
Je ne puis que vous recommender le cours : Initiation aux expressions régulières.

@gloubi : je ne suis pas sûr que supprimer le comportement gourmand de l'expression soit une bonne idée. De plus, il y a une option pour cela (U).


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 21h24   #5
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
Par défaut lol

c'est aussi simple que ça ?
moi qui pensait faire une boucle énorme sur la valeur numérique...

Je crois qu'il va falloir que je retrouve mes cours d'automates pour comprendre les exp reg.
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 21h39   #6
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
arf, j'avoue que j'ai eu la flemme de me repencher sur la syntaxe du preg_replace pour faire un exemple alors que j'avais celle du preg_match en tête...

heuuu d'ailleur, c'est pas \\1 pour le parametre (au lieu de \1) ?
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h22.


 
 
 
 
Partenaires

Hébergement Web