tout sauf une chaîne dans un egexp

tout sauf une chaîne dans un egexp - PHP - Programmation

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]

Reply

Marsh Posté le 23-05-2006 à 02:45:16   

Reply

Marsh Posté le 23-05-2006 à 07:27:06    

Pleinement lisible, tout ça...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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


Message édité par anapajari le 23-05-2006 à 09:35:17
Reply

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

Reply

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+

Reply

Marsh Posté le 24-05-2006 à 10:23:01    

la mienne elle marche :D
Et je peux te l'expliquer en plus ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed