Felix Riesterer: URLs verkürzen

Beitrag lesen

Lieber klaus,

verstehe ich Dich richtig, dass am Ende Deiner Verkürzung keine Auslassungspunkte, sondern sinnvoller String-Inhalt stehen soll? Also dass immer ein String in der Art "www.exaple...param=xyz" stehen soll?

Dann brauchst Du eine Maximal-Länge (Zeichenlänge) für die anzuzeigende URL.
1.) Die jeweilige URL wird überprüft, ob sie die maximale Länge überschreitet.
1a) wenn nicht, bleibt sie unverändert.
2.) Du errechnest die Anzahl an auszulassenden Zeichen.
3.) Du bestimmst die Anfangszeichen und die Endzeichen des Strings und verknüpfst sie mit "..."
4.) Fertig.

function kurzURL($oStr) {  
    // $oStr = 'http://www.example.com/dir/subdir/subsubdir/subsubsubdir/file.ext?param1=xyz&param2=yz&param3=z';  
  
    $maxLen = 15; // Es werden maximal 15 Zeichen des originalen Strings angezeigt (8 am Anfang, 7 am Ende).  
  
    $kurzURL = preg_replace('~^(?i)http://~', '', $oStr); // Protokoll entfernen falls vorhanden  
    $kurzURL = substr($kurzURL, 0, ceil($maxLen/2)).'...'; // erste "Hälfte" des Strings  
    $kurzURL .= substr($oStr, - floor($maxLen/2)); // letzte "Hälfte" des Strings  
    return $kurzURL;  
}

Das könnte man vielleicht auch wesentlich eleganter mit nur einer RegExp machen, aber ich bin jetzt zu müde, mir das genauer auszudenken. Code ist übrigens ungetestet!

Liebe Grüße aus Ellwangen,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)