Titel von Links auslesen mit PHP
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>(.*)<\/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;
}
?>
Bildquelle: boehrsi.de open_in_new