Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1096 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  tout sauf une chaîne dans un egexp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tout sauf une chaîne dans un egexp

n°1372766
Zapco
Posté le 23-05-2006 à 02:45:16  profilanswer
 

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]

mood
Publicité
Posté le 23-05-2006 à 02:45:16  profilanswer
 

n°1372777
sielfried
Posté le 23-05-2006 à 07:27:06  profilanswer
 

Pleinement lisible, tout ça...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1372814
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-05-2006 à 09:34:24  profilanswer
 

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
n°1373554
Zapco
Posté le 23-05-2006 à 19:56:51  profilanswer
 

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

n°1373706
Zapco
Posté le 24-05-2006 à 01:26:26  profilanswer
 

bon j'ai rusé pour faire marché mon truc mais je sais toujours pas dire je prend une chaine sauf un mot.
 
merci,
A+

n°1373826
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-05-2006 à 10:23:01  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  tout sauf une chaîne dans un egexp

 

Sujets relatifs
mettre un int dans une chaine unsigned char *chainejavascript : test sur chaine de caractere
[.net c++] chaine de caractèreRécupérer une chaîne de caractère dans un fichier
convertir une chaine en date en phpCréer un objet à partir d'une chaîne de caractères
comparer deux chaine StringTransformer unCString en Chaine de caractere
probleme structure chaine de caracterespasser un numérique en chaine ou inversement
Plus de sujets relatifs à : tout sauf une chaîne dans un egexp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR