|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
Bonjour,
Est t'il possible d'exclure une sous-chaine dans le pattern d'une expression réguliere ? Je cherche en fait a ecrire une expression réguliere qui me permette de remplacer tous les chemins par des URL dans les tags liens et images d'un fichier HTML. En résumé je veux transformer : href="/images/mon_image.gif" en href="http://www.monsiteweb.com/images/mon_image.gif" J'ai reussi avec une seule expression réguliere a prendre en compte tous les cas : href='', href="", src='',src="" ; mais mon probleme est que dans mon fichier HTML il y a parfois des liens qui sont déjà sous la forme d'URL, et apres transformation via preg_replace, j'obtiens : href="http://www.monsiteweb.comhttp://www.monsiteweb.com J'ai recours a nouveau a preg_replace pour supprimer ces doublons. Pour coder de facon plus propre j'aimerais pouvoir faire les remplacements avec une seule expression réguliere et non pas deux. Donc je voudrais que mon pattern me permette d'exclure par exemple les chaines contenant "http" et c'est la que je bloque...comment je fais pour préciser que la sous-chaine http ne doit pas être présente ? Merci |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
remplacement :voila, mais ce n'est valable que si tu as toujours un / au début des liens que tu veux changer.
sinon il faut que tu fasses un test sur $1, si il contient la chaine http, et le tour est joué !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
C'est possible avec une assertion arrière négative:
Motif de recherche:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Whaa, merci ripat je connaissais pas du tout et c'est super bien, je suis donc allé chercher un peu de doc la dessus, et j'ai trouvé cela.
Citation:
et tu peux m'expliquer la différence entre avant et arrière ? Merci !! P.S : Matth_S mets pas tout de suite Résolu stp.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Dans ce cas on cherche à remplacer les occurrences qui ne comportent pas de http://
Il te faut donc une assertion avant (on teste ce qui suit) et négative. Elles sont très pratiques et ont une caractéristique intéressante: elles ne "mangent" pas de caractère. Ce sont des marqueurs de position (entre deux caractères) tout comme les assertions simples \b ou les ancrages ^et $ assertions simples: http://www.lumadis.be/regex/tuto_pcre.php#asser assertions avant-arrières: http://www.lumadis.be/regex/tuto_pcre.php#look Edit: J'écris une assertion avant et je parle d'une assertion arrière
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
Merci pour vos réponses !
@ripat : C'est exactement ce que je cherchais Merci pour l'info tu m'as également permis d'apprendre un truc ! @Maxoo : Dis moi quand je peux basculer sur résolu |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
C'est bon pour moi, merci Matth_S
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com