Thread RegEx für Links: ...schon wieder eine Standardfrage :-) (7 answers)
Opened by cbxk1xg at 2003-12-03 19:13

Strat
 2003-12-04 00:37
#74273 #74273
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
[quote=cbxk1xg,03.12.2003, 18:13]
Code: (dl )
$line =~ s-\www.(.*?)\.(.*?)-<a href="http://www.$1" target ="_blank">http://www.$1</a>-g
[/quote]
.* sucht nach null oder mehr Zeichen, wobei durch das ? danach moeglichst wenig Zeichen gefunden werden (also Null).

\w steht fuer ein Wortzeichen (a-zA-Z0-9_); bei dir waere also auch 3ww gueltig.

www.: der Punkt steht fuer ein beliebiges zeichen, also auch wwwx
Du verwendest zwar $1, nicht jedoch $2

was passiert bei deinem Code, wenn da
http://xwwote.
hereinkommt?

Ein klein wenig koenntest du den Scanner folgendermaszen verbessern:
Code: (dl )
1
2
3
4
5
6
7
8
$line =~ s~
www # am anfang www: was passiert mit WWW ? oder board?
\.     # danach ein Punkt
(.+?) # danach ein oder mehrere Zeichen, aber moeglichst wenig
\. # danach ein Punkt
(.+?) # danach ein oder mehrere beliebige Zeichen, moeglichst wenig
\b # danach eine Wortgrenze
~<a href="[URL=http://www.$1.$2]http://www.$1.$2"[/URL] target="_blank">www.$1.$2</a>~xg;

Das mit der wortgrenze ist auch keine Idealloesung, weil da z.B. urls wie www.xyz.de/irgendwas nur www.xyz.de erkennen wuerde.\n\n

<!--EDIT|Strat|1070491132-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread RegEx für Links: ...schon wieder eine Standardfrage :-)