link im text ersetzen/verlinken
Roger
- php
0 Roger
moin!
per function lasse ich alle links in einem text verlinken (für html-ausgabe):
function url_to_link($str)
{
$str = eregi_replace ("[[:alpha:]]+://www", "www",$str);
$str = ereg_replace ("[[:alpha:]]+://[^<>[:space:]]+[:alnum:]/+", "<a href=\0 target=_blank>\0</a>", $str);
$str = ereg_replace ("www.[^<>[:space:]]+[:alnum:]/+", "<a href=http://\0 target=_blank>\0</a>", $str);
}
funktioniert alles prima. leider werden aber keine querys mit erkannt (ala www.site.com?id=123 <- hier wird nur "www.site.com" verlinkt). bei regexp guck ich allerdings wie'n schwein ins uhrwerk. kann mir da einer weiterhelfen?
gru.
roger.
moin!
irgendwan ist es wohl immer das erste mal. learning by doing klappt wohl doch immer am besten ;)
ich hab die function jetzt ein wenig erweitert und mal damit rumgespielt. klappt meines erachtens soweit...
wäre ja cool, wenn sie vielleicht noch jemand optimieren könnte (wirkt ziemlich aufgeblasen).
function url_to_link($str)
{
$str = eregi_replace ("[[:alpha:]]+://www", "www",$str);
$str = ereg_replace ("[[:alpha:]]+://[^<>[:space:]]+[:alnum:]/+(?[/:-'{}()._&a-zA-Z0-9+=]*)", "<a href=\0 target=_blank>\0</a>", $str);
$str = ereg_replace ("www.[^<>[:space:]]+[:alnum:]/+(?[/:-'{}()._&a-zA-Z0-9+=]*)", "<a href=http://\0 target=_blank>\0</a>", $str);
//hier werden gleich noch alle emails verlinkt:
$str = ereg_replace ("[[:alpha:]]+@[^<>[:space:]]+[:alnum:]/+", "<a href=mailto:\0 target=_blank>\0</a>", $str);
return $str;
}
gruß.
roger.