Seite 1 von 1

Lange Links automatisch kürzen

Verfasst: 15.01.2007 14:01
von Christian_W
Mit dieser Änderung werden lange Links automatisch verkürzt dargestellt.

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); 
Erklärung:
$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. ;)
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.