Messages: 521

Enregistré le: 11 Jan 2004

Message le Mar Aoû 31, 2004 12:11

Bonjour, je voudrais mettre au point un regex pour creer un lien au fichier citer dans une chaine , par exemple : sys/mysql.cs config.h <mysql.o> ... Je voudrais prévoir ces 3 type de formatage, et donc aussi plusieurs types d'extension de fichier : .cs .h .o etc

J'ai essayer de faire un regex mais pas tres concluant :
Code: Tout sélectionner
<?

$chaine=("essai mysql.dll mysql.h Mysql/mysql.h <mysql.o>");
$chaine = eregi_replace("([:space:]).+(\..+('dll|h|o|cs'))", "<A HREF=\"\\1\" TARGET=\"_blank\">\\1\\2\\3</A>", $chaine);
echo $chaine;

?>


Si qq pouvait me dire ou j'ai faux :)

Merci
Haut
7 Réponses
Messages: 477

Enregistré le: 27 Fév 2004

Message le Mar Aoû 31, 2004 12:31

Pourqoi diable mettre 'dll|h|o|cs' entre quote?
Haut
Messages: 521

Enregistré le: 11 Jan 2004

Message le Mar Aoû 31, 2004 12:33

Ben en faite fo y mettre entre " " dab mais la je sais pas trop comment faire vu qu'il y a deja des " "avant et que je ne suis pas sur pouvoir les enlever :) mais je sais que c une connerie ...
Haut
Messages: 477

Enregistré le: 27 Fév 2004

Message le Mar Aoû 31, 2004 12:34

Par ailleurs, \s ne serait t-il pas plus clair que [:space:]
Je ne comprend pas bien le but de \..+

A ta place, j'aurais fait ca:

(([^\s].+)\.(dll|h|o|cs))
vers
"<a href=\"\\1\">\\1</a>"

Tout simplement
Haut
Messages: 477

Enregistré le: 27 Fév 2004

Message le Mar Aoû 31, 2004 12:40

Oups!


(([^\s]+)\.(dll|h|o|cs))
vers
"<a href=\"\\1\">\\1</a>"

Au temps pour moi!
Haut
Messages: 521

Enregistré le: 11 Jan 2004

Message le Mar Aoû 31, 2004 12:48

Ya du mieux mais ca ne prend pas tout le mot dans le lien c bizzare, et aussi, avec ce regex, tu prends en compte les nom de fichier entre <> ? et ceux qui commence par / ?
Haut
Messages: 521

Enregistré le: 11 Jan 2004

Message le Mar Aoû 31, 2004 12:54

Je deviens une bete :) j'ai reussi a modifier ton regex et ca marche parfaitement Merci bcp maxttb !
Code: Tout sélectionner
<?
$chaine=("essai mykjhkjql.o klj lkj mysql.h lkj Mysql/mysql.h <mysql.h>");
$chaine = eregi_replace("(([^[:space:]|\<|\/|\"]+)\.(dll|h|o|cs))", "<A HREF=\"\\1\" TARGET=\"_blank\">\\1</A>", $chaine);
echo $chaine;
?>
Modifié en dernier par YvesB le Mar Aoû 31, 2004 13:11, modifié 1 fois.
Haut
Messages: 477

Enregistré le: 27 Fév 2004

Message le Mar Aoû 31, 2004 13:05

De rien.
Heureux de t'avoir aidé dans le monde palpitant des regex!
Haut