tout sauf une chaîne dans un egexp - PHP - Programmation
Marsh Posté le 23-05-2006 à 07:27:06
Pleinement lisible, tout ça...
Marsh Posté le 23-05-2006 à 09:34:24
Si j'ai tout compris ( ce dont je doute hein), je ferais un regex comme ça:
/href=(["'])(?!http)(.*?)\1/href="http:\/\/www.tonsite.com\/$2"/ |
Mais cela pourrait poser certains problèmes ( lien vers de ftp, lien mailto, etc) du coup je l'écrirais plutôt:
/href=(["'])(?!(http|www|ftp|mailto))(.*?)\1/href="http:\/\/www.tonsite.com\/$2"/ |
edit: Ahh c'est de la PCRE donc utilise preg
Marsh Posté le 23-05-2006 à 19:56:51
En fait j'avais pas bien vu que leur nouveau éditeur ne marche pas très bien.
Voici mon expression
$html = preg_replace('`href *= *("|\')?([^h][^t][^t][^p][^:])`i', "href=\\1http://www.monsiteweb/\\2", $html);
mais elle fait pas exactement ce que je veux, car je veux la chaîne sauf celle avec "http:" or actuellement j'ai sauf h en première lettre, sauf t en deuxième et troisième lettre... ce qui fait qu'un lien vers intro.php qui a un t en troisième lettre ne marche pas.
anapajari, je test ton expression et je te tiens au courant
Marsh Posté le 24-05-2006 à 01:26:26
bon j'ai rusé pour faire marché mon truc mais je sais toujours pas dire je prend une chaine sauf un mot.
merci,
A+
Marsh Posté le 23-05-2006 à 02:45:16
je désire inserer dans toute les url qui ne commence pas par "http:" la chaîne "http://www.monsite.com/"
[#800000 size=2]
$html[/#800000 size=2][size=1] = preg_replace([/size][#0000f0 size=2]'`href[ ]*=[ ]*("|[/#0000f0 size=2][#008000 size=2]\'[/#008000 size=2][#0000f0 size=2])?([^h][^t][^t][^p][^:])`i'[/#0000f0 size=2][size=1], [/size][#0000f0 size=2]"href=[/#0000f0 size=2][#008000 size=2]\\[/#008000 size=2][#0000f0 size=2]1http://www.monsite.com/[/#0000f0 size=2][#008000 size=2]\\[/#008000 size=2][#0000f0 size=2]2"[/#0000f0 size=2][size=1], [/size][#800000 size=2]$html[/#800000 size=2][size=1]);
[/size][size=1]
[/size][size=1]donc je cherche toutes les chaînes commencant par href
[/size][size=1]puis 0 ou plusieurs espace
[/size][size=1]puis le caratère =
[/size][size=1]puis 0 ou plusieurs espace
[/size][size=1]puis peut être le caractère \" ou le caractère '
[/size][size=1]puis je veux prendre ce qui ne commence pas par http:
[/size][size=1]
[/size][size=1]
[/size][size=1]Or là si mon lien est href=intro.php ca ne marche pas car j'ai un t à la 3ième lettre après le =
[/size][size=1]
[/size][size=1]je sais dire en regexp selectionner une chaîne de caractère sauf une lettre, mais comment dit-on de selectionner une chaîne sauf un mot?[/size]