Mailinglisten-Archive |
Hi, folgende Funktion parsed alle Links. cu Martin http://www.webmaster-foren.de -- schnipp -- <? function auto_link($str) # don't use target if tail is follow $regex[file] = "gz|tgz|tar|gzip|zip|rar|mpeg|mpg|exe|com|rpm|dep|rm|ram|asf|ace|viv"; # define URL $regex[http] = "(http|https|ftp|telnet|news):\/\/([a-z0-9_\-]+\.[][a-z0-9:;&#_(at)_=_~%\?\/\.\,\ +\-]+)"; # define Link ohne http:// #$regex[link] = "(www)(\.[][a-z0-9:;&#_(at)_=_~%\?\/\.\,\+\-]+)"; # define E-mail address $regex[mail] = "([a-z0-9_\-]+)_(at)_([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)"; # don't use target $regex[notarget] = "(http|https|ftp|news):\/\/([a-z0-9_\-]+\.[][a-z0-9:;&#_(at)_=_~%\?\/\.\,\+\-]+)\ /[][a-z0-9:#_(at)__~%\/\.\,\+\-]+\.($regex[file])"; # If use "wrap=hard" option in TEXTAREA tag, # connected 2 lines that devided 2 lines in a link $str = eregi_replace("<([^<>\n]+)\n([^\n<>]+)>", "<\\1 \\2>", $str); # replaced special char and delete target $str = eregi_replace("&(quot|gt|lt)","!\\1",$str); $str = eregi_replace("([ ]+)target=[\"'_a-z,A-Z]+","", $str); $str = eregi_replace("([ ]+)on([a-z]+)=[\"'_a-z,A-Z\?\.\-_\/()]+","", $str); # protected link when use html link code # protected URL $str = eregi_replace("<a([ ]+)href=([\"']*)($regex[http])([\"']*)>","<a class=\"sm\" href=\"\\4_orig://\\5\" target=\"_blank\">", $str); # protected E-mail $str = regi_replace("<a([ ]+)href=([\"']*)mailto:($regex[mail])([\"']*)>","<a class=\"sm\" href=\"mailto:\\4#-#\\5\">", $str); # protected Image link $str = eregi_replace("<img([ ]*)src=([\"']*)($regex[http])([\"']*)","<img src=\"\\4_orig://\\5\"",$str); # protected flash link $str = regi_replace("<embed([ ]*)src=([\"']*)($regex[http])([\"']*)","<embed src=\"\\4_orig://\\5\"",$str); # auto linked url and email address that unlinked $str = eregi_replace("($regex[http])","<a class=\"sm\" href=\"\\1\" target=\"_blank\">\\1</a>", $str); # $str = eregi_replace("($regex[link])","<a class=\"sm\" href=\"http:\/\\1\" target=\"_blank\">\\1</a>", $str); $str = eregi_replace("($regex[mail])","<a class=\"sm\" href=\"mailto:\\1\">\\1</a>", $str); # restored code that replaced for protection $str = eregi_replace("!(quot|gt|lt)","&\\1",$str); $str = eregi_replace("(http|https|ftp|telnet|news)_orig","\\1", $str); $str = eregi_replace("#-#","_(at)_",$str); # delete multiple link $str = eregi_replace("(<a href=([\"']*)($regex[http])([\"']*)+([^>]*)>)+<a href=([\"']*)($regex[http])([\"']*)+([^>]*)>","\\1", $str); $str = eregi_replace("(<a href=([\"']*)mailto:($regex[mail])([\"']*)>)+<a href=([\"']*)mailto:($regex[mail])([\"']*)>","\\1", $str); $str = str_replace("</a></a>","</a>",$str); # if url is file, delete target $str = eregi_replace("(<a class=\"sm\" href=\"$regex[notarget]\")+ target=\"_blank\"","\\1",$str); return $str; } ?> -- schnapp --
php::bar PHP Wiki - Listenarchive