Encore besoin d'aide sur les regexp please ! [done !] - PHP - Programmation
Marsh Posté le 13-09-2002 à 11:53:08
pour le point 1 c'est ok j'ai change la fonction :
function hrefTag($inputText){ |
...etc
Marsh Posté le 13-09-2002 à 12:48:58
allo ! Ya kkun ?
Marsh Posté le 13-09-2002 à 13:36:15
oui mais ...
je comprend rien alors pe pas t aider.....
je sors...
Marsh Posté le 13-09-2002 à 14:24:44
mais ils sont ou ? mais ils sont ou ?mais ils sont ou les codeurs fous ??
(desespoir inside)
Marsh Posté le 13-09-2002 à 14:45:32
kayasax a écrit a écrit : actuellement j'utilise ca comme fonction :
|
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.
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 !
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.
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
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 ...
Marsh Posté le 18-09-2002 à 10:57:55
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
Marsh Posté le 18-09-2002 à 11:11:40
t'es vraiment un boulay parfois
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 :
|
Marsh Posté le 18-09-2002 à 11:20:47
mais non... 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>
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>
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..
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 !
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 ?
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 \\\\
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
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.
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>
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> |
PAr hasard, une de tes autres regexp ne seraient pas passer modifer cette valeur juste avant?
En tout cas, si c'est al seule regexp à agir, alors c'est que j'ai aps tout compris moi.
Marsh Posté le 18-09-2002 à 19:16:36
non c'est la seule regexp dans mon code
Marsh Posté le 23-09-2002 à 11:52:26
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
Marsh Posté le 13-09-2002 à 11:49:06
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 ...
à tous ceux qui comprennet les regexp
Message édité par kayasax le 18-09-2002 à 11:56:09
---------------
All we need is a soul revolution