probleme d'Expression reguliere

YvesB

WRInaute occasionnel
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:
<? 

$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
 

YvesB

WRInaute occasionnel
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 ...
 

maxttb

WRInaute occasionnel
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
 

YvesB

WRInaute occasionnel
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 / ?
 

YvesB

WRInaute occasionnel
Je deviens une bete :) j'ai reussi a modifier ton regex et ca marche parfaitement Merci bcp maxttb !
Code:
<? 
$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;
?>
 

Discussions similaires

Haut