Encore besoin d'aide sur les regexp please ! [done !]

Encore besoin d'aide sur les regexp please ! [done !] - PHP - Programmation

Marsh Posté le 13-09-2002 à 11:49:06    

:hello:  
actuellement j'utilise ca comme fonction :

function hrefTag($inputText){  
$inputText=eregi_replace("([ \t]|^)www\.", " http://www.", $inputText);  
$inputText=eregi_replace("([ \t]|^)\\.", " http://.", $inputText);  
 
$inputText =  eregi_replace("([-a-z0-9_]+(\.[_a-z0-9-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)+))", "<a href=\"mailto:\\1\">\\1</a>", $inputText);  
$text= eregi_replace("(http|https|ftp)://([^ !\'\"()\r\n,;:]+)",  
      "<A HREF=\"\\1://\\2\" TARGET=_blank>\\1://\\2</A>",  
      $inputText);  
return $text;  
}


 
-1er problème : une adresse du type www.toto.com n'est pas transformée et je ne capte pas pkoi .si vous pouvez m'aider
 
-2 Je voudrais que la fonction transforme aussi les liens windows exemple : \\serveur\partage\fichier.txt transformé en <a href="//serveur/partage/fichier.txt" target="_blank">\\serveur\partage\fichier.txt</a>
-3 je voudrais pouvoir isoler les liens du reste cad : le return $text ne renvoie que les liens pas le texte ...
 
 :jap: à tous ceux qui comprennet les regexp  [:plat00n]


Message édité par kayasax le 18-09-2002 à 11:56:09

---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-09-2002 à 11:49:06   

Reply

Marsh Posté le 13-09-2002 à 11:53:08    

pour le point 1 c'est ok j'ai change la fonction :

function hrefTag($inputText){  
$inputText=eregi_replace("([ \t]|^)www\.", " http://www.", $inputText);  
$inputText=eregi_replace("www\.", " http://www.", $inputText);  


...etc


Message édité par kayasax le 13-09-2002 à 11:53:34

---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-09-2002 à 12:48:58    

:hello: allo ! Ya kkun ?


---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-09-2002 à 13:36:15    

oui mais ...
je comprend rien alors pe pas t aider.....
 
je sors...:)

Reply

Marsh Posté le 13-09-2002 à 14:24:44    

:cry:  
mais ils sont ou ? mais ils sont ou ?mais ils sont ou  les codeurs fous ??
(desespoir inside) [:sharpknife]


---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-09-2002 à 14:45:32    

kayasax a écrit a écrit :

:hello:  
actuellement j'utilise ca comme fonction :

function hrefTag($inputText){  
$inputText=eregi_replace("([ \t]|^)www\.", " http://www.", $inputText);  
$inputText=eregi_replace("([ \t]|^)\\.", " http://.", $inputText);  
 
$inputText =  eregi_replace("([-a-z0-9_]+(\.[_a-z0-9-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)+))", "<a href=\"mailto:\\1\">\\1</a>", $inputText);  
$text= eregi_replace("(http|https|ftp)://([^ !\'\"()\r\n,;:]+)",  
      "<A HREF=\"\\1://\\2\" TARGET=_blank>\\1://\\2</A>",  
      $inputText);  
return $text;  
}


 
-1er problème : une adresse du type www.toto.com n'est pas transformée et je ne capte pas pkoi .si vous pouvez m'aider
 
-2 Je voudrais que la fonction transforme aussi les liens windows exemple : //serveur/partage/fichier.txt transformé en <a href="//serveur/partage/fichier.txt" target="_blank">//serveur/partage/fichier.txt</a>
 
-3 je voudrais pouvoir isoler les liens du reste cad : le return $text ne renvoie que les liens pas le texte ...
 
 :jap: à tous ceux qui comprennet les regexp  [:plat00n]



Pour le 2 :
$inputText= eregi_replace("(//[^ !\'\"()\r\n,;:]+)","<A HREF=\"file:\\1\" TARGET=_blank>\\1</A>",$inputText);
 
J'ai vraiment pas l'habitude d'en faire alors je sais pas du tout si ca va marcher.
pour le file: c'est pour indiquer au navigateur qu'il doit chercher un fichier sur le poste ou le voisinage réseau et non sur un serveur.

Reply

Marsh Posté le 13-09-2002 à 14:49:20    

merde je me suis planté dans mes postes les chemins windows c'est des \ pas des /  
omega 2 j'ai essaye ta regexp :
 
$inputText= eregi_replace("([\\][^ !\'\"()\r\n,;:]+)","<A HREF=\"file:\\1\" TARGET=_blank>\\1</A>",$inputText);  
 
mais marche po !


---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-09-2002 à 15:40:28    

kayasax a écrit a écrit :

merde je me suis planté dans mes postes les chemins windows c'est des \ pas des /  
omega 2 j'ai essaye ta regexp :
 
$inputText= eregi_replace("([\\][^ !\'\"()\r\n,;:]+)","<A HREF=\"file:\\1\" TARGET=_blank>\\1</A>",$inputText);  
 
mais marche po !
 



Ca aurait été le contraire, j'en aurais été étoné. ;)
J'ai essayé d'en faire une a partir des tiennes et visiblement, j'ai loupé mon coup.

Reply

Marsh Posté le 16-09-2002 à 10:52:42    

 :hello: :bounce:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 16-09-2002 à 11:36:11    

pour le lien www.toto.com
remplace juste $text par $inputText
 
Pour les liens windows
faut double - doubler (ouhlà) les backslashes car il sont à échappé
un \ s'écrit \\ donc si t'en veux deux faut en mettre quatre


Message édité par Sh@rdar le 16-09-2002 à 11:37:11

---------------
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
Reply

Marsh Posté le 16-09-2002 à 11:36:11   

Reply

Marsh Posté le 16-09-2002 à 15:55:37    

Sh@rdar a écrit a écrit :

pour le lien www.toto.com
remplace juste $text par $inputText
 
Pour les liens windows
faut double - doubler (ouhlà) les backslashes car il sont à échappé
un \ s'écrit \\ donc si t'en veux deux faut en mettre quatre




 :( ben je sais deja echapper le \ ( [\\] pour le double )
mais c'est apres j'arrive pas a transformer le chemin windows en un lien ...


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 10:57:55    

:cry: upEUH !
 
Je récapitule il faut trouver l'expression régulière qui correspond a ceci : chaine qui commence par un \\ et qui se termine par un espace ou un retour chariot...
ca doit pas etre tres dur pourtant  :ouch:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 11:11:40    

t'es vraiment un boulay parfois  :ouch:  
 
je vais te donner un peu de la force jeune padawan, la solution est dans mon post au dessus (doubler les \, chose que tu n'as pas fait):
 
ça marche comme ça :
 

Code :
  1. $inputText= eregi_replace("([\\\\][^ !\'\"()\r\n,;:]+)","<A HREF=\"file:\\\\1\" TARGET=_blank>\\\\1</A>",$inputText);



---------------
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
Reply

Marsh Posté le 18-09-2002 à 11:20:47    

:jap: mais non... :pt1cable: y encore une cou...e dans le potage:
 
<?
$inputText="\\127.0.0.1\c\test.jpg";
$inputText= eregi_replace("([\\\\][^ !\'\"()\r\n,;:]+)","<A HREF=\"file:\\\\1\" TARGET=_blank>\\\\1</A>",$inputText);  
echo $inputText;
?>
 
me sort <A HREF="file:\\127.0.0.1" TARGET=_blank>\\127.0.0.1</A><A HREF="file:\\c est.jpg" TARGET=_blank>\\c est.jpg</A>


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 11:45:18    

en modifiant le replace comme ca :
$inputText= eregi_replace("([\\\\][^ \r\n,;]+)","<A HREF=\"file:\\\\1\" TARGET=_blank>\\\\1</A>",$inputText);  
 
c'est un peu mieu mais il s'arrete quand meme avant la fin de la chaine :
<A HREF="file:\\127.0.0.1\c est.jpg" TARGET=_blank>\\127.0.0.1\c est.jpg</A>
 
 :??:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 11:50:20    

\t est interprété comme une tabulation donc forcément ça fout la merde
 
faudrait savoir d'où vient ton exemple : BDD ? addslashé avant ? stripslashé ? formulaire ? lien seul ? etc..


---------------
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
Reply

Marsh Posté le 18-09-2002 à 11:55:19    

Sh@rdar a écrit a écrit :

\t est interprété comme une tabulation donc forcément ça fout la merde
 
faudrait savoir d'où vient ton exemple : BDD ? addslashé avant ? stripslashé ? formulaire ? lien seul ? etc..
 




oui je viens de voir qu'avec un autre caractere ca marche pour mon exemple g directement tape le chemin dans le fichier mais sinon les donnees viennent de mysql (enregistrees par un formulaire) donc il ne devrait plus y avoir de pb !
 :jap: bcp !
 
par contre juste pour savoir dans mon exemple j'ai essaye htmlentities pour echapper le \t mais ca marche pas ? c'est quelle fonction qu'il faudrait utiliser ?


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 11:56:04    

kayasax a écrit a écrit :

...
$inputText= eregi_replace("([\\\\][^ \r\n,;]+)","<A HREF=\"file:\\\\1\" TARGET=_blank>\\\\1</A>",$inputText);  
...




Ce que je ne comprends pas, c'est pourquoi tu définis une classe au début de ta regex: [\\\\]. Cette séquence ne représente qu'un caractère qui peut être \ ou \ (donc forcément \ finalement). Or si j'ai bien compris, tu veux 2 \. Donc, remplace [\\\\] par \\\\

Reply

Marsh Posté le 18-09-2002 à 11:57:27    

Toucouch a écrit a écrit :

 
Ce que je ne comprends pas, c'est pourquoi tu définis une classe au début de ta regex: [\\\\]. Cette séquence ne représente qu'un caractère qui peut être \ ou \ (donc forcément \ finalement). Or si j'ai bien compris, tu veux 2 \. Donc, remplace [\\\\] par \\\\




nop [\\\\] coresspond bien a \\ dans mon texte


Message édité par kayasax le 18-09-2002 à 11:58:12

---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 14:44:56    

kayasax a écrit a écrit :

 
nop [\\\\] coresspond bien a \\ dans mon texte



Normalement, [\\\\] veut dire que tu donnes à ta regexp le choix entre les caractères  \ et \ (les caractères [ et ] délimites les listes de choix).
Si ca amrche dans l'exemple que t'as donné, c'est par ce qu'il va utiliser le second \ comme début de la partie trouvé corespondant à la regexp.
Essayes donc ton exemple mais avec juste un seul \ au début de l'exemple et tu véras qu'il te fera la même modif. ;)

Reply

Marsh Posté le 18-09-2002 à 17:29:30    

omega2 a écrit a écrit :

Normalement, [\\\\] veut dire que tu donnes à ta regexp le choix entre les caractères  \ et \ (les caractères [ et ] délimites les listes de choix).
Si ca amrche dans l'exemple que t'as donné, c'est par ce qu'il va utiliser le second \ comme début de la partie trouvé corespondant à la regexp.
Essayes donc ton exemple mais avec juste un seul \ au début de l'exemple et tu véras qu'il te fera la même modif. ;)




 
 :??: non si je mets ca :
$inputText="\127.0.0.1\c\test.jpg";
 
ca me sort ca :
W.0.0.1<A HREF="file:\\c est.jpg" TARGET=_blank>\\c est.jpg</A>   :pt1cable:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 18-09-2002 à 18:26:38    

kayasax a écrit a écrit :

 
 
 :??: non si je mets ca :
$inputText="\127.0.0.1\c\test.jpg";
 
ca me sort ca :
W.0.0.1<A HREF="file:\\c est.jpg" TARGET=_blank>\\c est.jpg</A>   :pt1cable:  



PAr hasard, une de tes autres regexp ne seraient pas passer modifer cette valeur juste avant? :o
En tout cas, si c'est al seule regexp à agir, alors c'est que j'ai aps tout compris moi.

Reply

Marsh Posté le 18-09-2002 à 19:16:36    

non c'est la seule regexp dans mon code


---------------
All we need is a soul revolution
Reply

Marsh Posté le 23-09-2002 à 11:52:26    

:hello:  
j'ai pu tester ca en exploitation ce matin, tu avais raison omega2 il ne faut pas mettre les [] voici ma regexp qui fonctionne :
 
$text= eregi_replace("(\\\\[^ \r\n,;]+)","<A HREF=\"file:\\1\" TARGET=_blank>\\1</A>",$text);
 
encore merci a tous


---------------
All we need is a soul revolution
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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