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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°213623
kayasax
Posté le 13-09-2002 à 11:49:06  profilanswer
 

: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
mood
Publicité
Posté le 13-09-2002 à 11:49:06  profilanswer
 

n°213625
kayasax
Posté le 13-09-2002 à 11:53:08  profilanswer
 

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
n°213644
kayasax
Posté le 13-09-2002 à 12:48:58  profilanswer
 

:hello: allo ! Ya kkun ?


---------------
All we need is a soul revolution
n°213670
cherchepa
Cherche pas...
Posté le 13-09-2002 à 13:36:15  profilanswer
 

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

n°213768
kayasax
Posté le 13-09-2002 à 14:24:44  profilanswer
 

: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
n°213799
omega2
Posté le 13-09-2002 à 14:45:32  profilanswer
 

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.

n°213804
kayasax
Posté le 13-09-2002 à 14:49:20  profilanswer
 

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
n°213853
omega2
Posté le 13-09-2002 à 15:40:28  profilanswer
 

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.

n°214952
kayasax
Posté le 16-09-2002 à 10:52:42  profilanswer
 

 :hello: :bounce:


---------------
All we need is a soul revolution
n°214967
Sh@rdar
Ex-PhPéteur
Posté le 16-09-2002 à 11:36:11  profilanswer
 

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
mood
Publicité
Posté le 16-09-2002 à 11:36:11  profilanswer
 

n°215160
kayasax
Posté le 16-09-2002 à 15:55:37  profilanswer
 

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
n°216147
kayasax
Posté le 18-09-2002 à 10:57:55  profilanswer
 

: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
n°216161
Sh@rdar
Ex-PhPéteur
Posté le 18-09-2002 à 11:11:40  profilanswer
 

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
n°216170
kayasax
Posté le 18-09-2002 à 11:20:47  profilanswer
 

: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
n°216194
kayasax
Posté le 18-09-2002 à 11:45:18  profilanswer
 

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
n°216198
Sh@rdar
Ex-PhPéteur
Posté le 18-09-2002 à 11:50:20  profilanswer
 

\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
n°216203
kayasax
Posté le 18-09-2002 à 11:55:19  profilanswer
 

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
n°216204
Toucouch
Posté le 18-09-2002 à 11:56:04  profilanswer
 

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

n°216205
kayasax
Posté le 18-09-2002 à 11:57:27  profilanswer
 

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
n°216383
omega2
Posté le 18-09-2002 à 14:44:56  profilanswer
 

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. ;)

n°216611
kayasax
Posté le 18-09-2002 à 17:29:30  profilanswer
 

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
n°216658
omega2
Posté le 18-09-2002 à 18:26:38  profilanswer
 

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.

n°216682
kayasax
Posté le 18-09-2002 à 19:16:36  profilanswer
 

non c'est la seule regexp dans mon code


---------------
All we need is a soul revolution
n°218743
kayasax
Posté le 23-09-2002 à 11:52:26  profilanswer
 

: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
mood
Publicité
Posté le   profilanswer
 


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

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

 

Sujets relatifs
[MySQL] comment faire avec un between... [ - Job's Done - ][php] experts regexp souhaités %{
Ouvrir 2 popup de la même page [ - Job's Done - ][SQL] aide sur un SELECT
Besoin d'aide pour site sous php forge[DOS]besoin de l´aide en FR...
[PHP / pb types MIME] à l'aide avec un powerpoint[C/Reseau] Petite explication niveau sockets please...
cherche fonc texte vers regexp + ex. cod gest smilie & format de texte 
Plus de sujets relatifs à : Encore besoin d'aide sur les regexp please ! [done !]


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