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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] regex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] regex

n°130429
bozocarzu
Posté le 24-04-2002 à 21:11:54  profilanswer
 

J'ai un petit probleme avec les regex  :crazy:  
 
J'ai une variable : $text="Cliquer <a href=\"mailto:a@a.fr\">ici</a>, ou envoyer la : a@a.fr";
 En vert le lien est deja fais donc on n'y touche pas mais je veut creer un lien sur le rouge !!
 
Donc je fais mon petit regex qui remplace a@a.fr par <a href="mailto:a@a.fr>a@a.fr</a> !!
 
Mais le probleme c'est que ma regex remplace TOUS les a@a.fr meme celui qui est dans le vert !!!  
 
Donc je me retrouve avec sa :
 
$text="Cliquer <a href=\"mailto:<a href="mailto:a@a.fr>a@a.fr</a>\">ici</a>, ou envoyer la : <a href="mailto:a@a.fr>a@a.fr</a>";
 
Sa va pas du tous !!

 

[jfdsdjhfuetppo]--Message édité par bozocarzu le 24-04-2002 à 21:12:36--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 24-04-2002 à 21:11:54  profilanswer
 

n°130448
Sh@rdar
Ex-PhPéteur
Posté le 24-04-2002 à 21:43:04  profilanswer
 

tu pourrais au moins filer ta regex  :jap:  
 
je pencherais pour tester que a@a.a se trouve bien à la fin de la chaine en utilisant le $
 
[a-z0-9](@)[a-z0-9](.)[a-z0-9]$


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°130481
bozocarzu
Posté le 24-04-2002 à 22:29:37  profilanswer
 

Voila ma regex
 
$avant="#([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)#si";
$apres='<a href="mailto:\0">\0</a>';
$text=preg_replace($avant,$apres,$text);

n°130483
bozocarzu
Posté le 24-04-2002 à 22:31:44  profilanswer
 

Ta methode ne marche qui si a@a.a est situé a la fin de la variable text !
Donc dans se cas sa marche mais il peut y avoir du text deriere a@a.fr donc la sa ne marhce plus !

 

[jfdsdjhfuetppo]--Message édité par bozocarzu le 24-04-2002 à 22:37:57--[/jfdsdjhfuetppo]

n°130495
Sh@rdar
Ex-PhPéteur
Posté le 24-04-2002 à 22:50:16  profilanswer
 

y a un truc que je pige pas : comment ça ce fait que le premier llien est déjà modifié ?
 
tu devrais les modifier tous avec ta regexp en une seule fois...


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°130499
bozocarzu
Posté le 24-04-2002 à 22:52:19  profilanswer
 

Oui le premier lien est deja comme sa d'origine, je veut juste convertir les lien qui ne sont pas converti !!!

n°130503
Sh@rdar
Ex-PhPéteur
Posté le 24-04-2002 à 22:54:41  profilanswer
 

en creusant un peu on peut trouver des critères de tri :
 
il faut que a@a.fr ne soit pas précédé de mailto: (lien déjà transformé)
 
il ne doit pas se trouver entre  > et </ (déjà des tags HTML)
 
ça irait pas avec ça ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°130508
bozocarzu
Posté le 24-04-2002 à 23:03:21  profilanswer
 

Bon j'avoue, j'ai essayer de le faire avec des restriction mais je ne suis pas arrivé a chaque fois il ne me trouve plsu ma chaine de charactere a@a.a :(
 
Tu peut essayer de me le faire, tu peut prendre en base de regex : [a-z0-9]@[a-z0-9] sa simplifiras le code

 

[jfdsdjhfuetppo]--Message édité par bozocarzu le 24-04-2002 à 23:04:16--[/jfdsdjhfuetppo]

n°130523
Sh@rdar
Ex-PhPéteur
Posté le 24-04-2002 à 23:18:25  profilanswer
 

([^mailto:|>])(([a-z0-9_]|\\-|\\.)+@([^[:space
:]]*)([[:alnum:]-])\.([^[:space:]]*)([[:alnum:]-]
))([^</])
 
 
à tester... j'ai peut être merdé la syntaxe au début
 
une chaine ne commençant pas par mailto: ou > contenant a@a.a (ou autre) et ne finissant pas par </

 

[jfdsdjhfuetppo]--Message édité par Sh@rdar le 24-04-2002 à 23:21:01--[/jfdsdjhfuetppo]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°130540
bozocarzu
Posté le 25-04-2002 à 01:04:50  profilanswer
 

J'ai trouver, enfin j'ai recopier sur un script !!
 
$avant="#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i";
$apres='\\1<a href="mailto:\\2@\\3">\\2@\\3</a>';
$text=preg_replace($avant,$apres,$text);


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

  [PHP] regex

 

Sujets relatifs
[PHP]afficher un enregistrement aleatoirement...[PHP]deux question de debutant
ASP, PHP mais y en a t'il d'autres interprettés serveur ?[PHP, Javascript ou autre] Ouvrir une fenêtre basique
[PHP] + [PEAR] : comment installer PHP et PEAR à la main ?[PHP] Fonction Download
Oooops ma chaine XML est interprétée comme du PHP...Je ne veux pas que les messages d'erreur s'affichent en PHP
[PHP] Fonction close() déjà définie ?[PHP] erreur "x" ligne 569
Plus de sujets relatifs à : [PHP] regex


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