Boehrsi.de - Blog

Titel von Links auslesen mit PHP

Erstellt am event Uhr von account_circle Boehrsi in label Archiv

Vor einiger Zeit hatte ich angekündigt mein Script zum auslesen von Titeln von Links hier als kleines How To online zu stellen. Auch wenn dies etwas gedauert hat hole ich es hiermit nach. Nützlich kann das ganze sein wenn man zum Beispiel Links in Kommentaren, Foren oder Gästebüchern schöner darstellen möchte. Für Wordpress und ähnliches gibt es dort Plugins oder vorgefertigte Funktionen, doch wenn man alles selber schreibt so wie ich es tue muss man sich auch diesem Problem selber annehmen.

<?
function setlink($text) {
    // Einheitliche Form für Links erzeugen (http://www)
    $text = str_replace("http://www.","www.",$text);
    $text = str_replace("www.","http://www.",$text);
    // Zeichenkette für Links festlegen
    $search = "/([\w]+:\/\/[\w-?&%+;#|~=\.,\/\@]+[\w\/])/i";
    // Ergebnisse suchen und in einem Array speichern
    preg_match_all($search, $text, $treffer);
    // Abarbeiten der gefunden Ergebnisse und Übergabe an die Umwandlungsfunktion (gettitlebyurl)
    for ($i=0;$i<count($treffer[0]);$i++) {
        $toReplace = $treffer[0][$i];
        $titel = gettitlebyurl($toReplace);
        $text = str_replace($toReplace,"<a href=\"$toReplace\" target=\"blank\">$titel</a>",$text);
    }
    return $text;
}

function gettitlebyurl($url) {
    $titelres = "";
    // Zielseite einlesen, bis zu 2000 Zeichen
    $string = file_get_contents($url, NULL, NULL, 0, 2000);
    // In den eingelesenen Zeichen wird der Titel gesucht
    if (preg_match("/<title>(.&#42;)<\/title>/Ui", $string, $title)) {
        $titelres = htmlentities($title[1]);
    }
    // Falls kein Titel gefunden wurde wird "Link" eingesetzt
    if ($titelres == "") {
        $titelres = "Link";
    }
    else {
        // Umlaute ersetzen, für UTF 8 Kodierung und den aktuellen Zeichensatz
        $titelres = str_replace("Ö","Oe",$titelres);
        $titelres = str_replace("Ä","Ae",$titelres);
        $titelres = str_replace("Ü","Ue",$titelres);
        $titelres = str_replace("ß","ss",$titelres);
        $titelres = str_replace("ö","oe",$titelres);
        $titelres = str_replace("ä","ae",$titelres);
        $titelres = str_replace("ü","ue",$titelres);
        $titelres = utf8_decode($titelres);
        $titelres = str_replace("Ö","Oe",$titelres);
        $titelres = str_replace("Ä","Ae",$titelres);
        $titelres = str_replace("Ü","Ue",$titelres);
        $titelres = str_replace("ß","ss",$titelres);
        $titelres = str_replace("ö","oe",$titelres);
        $titelres = str_replace("ä","ae",$titelres);
        $titelres = str_replace("ü","ue",$titelres);
        // Sonderzeichen entfernen
        $titelres = preg_replace("/[^0-9a-zA-Z_\s\.\:\,\-]/","", $titelres);
        // Lange Titel kürzen
        if (strlen($titelres)>100) {
            $titelres=substr($titelres,0,100) . "...";
        }
    }
    return $titelres;
}
?>
Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.