Lange Links automatisch kürzen
Verfasst: 15.01.2007 14:01
Mit dieser Änderung werden lange Links automatisch verkürzt dargestellt.
Erklärung:
Die letzten Zeichen deshalb, damit man erkennen kann was man da eigentlich anklickt (also z.B. html, zip, exe, usw.)
Durch verändern der Werte kann man das Verhalten wie gewünscht anpassen.
Code: Alles auswählen
----- öffne includes/bbcode.php
----- finde -----
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
----- füge danach ein ----
// Remove long url
$ret = preg_replace("/<a href=(.*?)>((http:\/\/|https:\/\/|ftp:\/\/|www\.).*?)<\/a>/ie", "(strlen(\"\\2\") > 65 && !eregi(\"<\", \"\\2\") ) ? '<a href='.stripslashes(\"\\1\").'>'.substr(\"\\2\", 0, 35) . '....' . substr(\"\\2\", -25).'</a>' : '<a href='.stripslashes(\"\\1\").'>'.\"\\2\".'</a>'", $ret);
Es wird nach den (bereits in html-code umgewandelten) Links gesucht und geprüft ob der Linktext (also das zwischen <a> und </a>) eine url ist und ob er länger als 65 Zeichen ist. Dann werden vom Anfang 35 Zeichen genommen, daran werden 4 Punkte gehängt (....). Hinten werden dann noch die letzten -25 Zeichen drangehängt und fertig ist der kurze Link.$ret = preg_replace("/<a href=(.*?)>((http:\/\/|https:\/\/|ftp:\/\/|www\.).*?)<\/a>/ie", "(strlen(\"\\2\") > 65 && !eregi(\"<\", \"\\2\") ) ? '<a href='.stripslashes(\"\\1\").'>'.substr(\"\\2\", 0, 35) . '....' . substr(\"\\2\", -25).'</a>' : '<a href='.stripslashes(\"\\1\").'>'.\"\\2\".'</a>'", $ret);
Die letzten Zeichen deshalb, damit man erkennen kann was man da eigentlich anklickt (also z.B. html, zip, exe, usw.)
Durch verändern der Werte kann man das Verhalten wie gewünscht anpassen.