PHP Automatische verlinkung von URLs

Ich möchte gerne unter PHP für mein Gästebuch eine Funktion schreiben, die (unter anderem) URLs erkennt und durch einen Link ersetzt. das Größte Problem dabei ist: Der fertige Link soll nach dem Schema (PHP-Code)

'’.getPageTitle($url).’

aufgebaut sein.
Anmerkungen:
$url ist die jeweilige Adresse
getPageTitle() parst die Übergebene Seite und gibt den Inhalt des Title-Tags zurück (falls vorhanden, andernfalls die URL).
Meine Idee ist:
mann parst den beitrag mittels eines regulären Ausdruckes und speichert die URLs in einem Array. Nun kann man mit str_replace() ans Werk gehen. Kann mir jemand helfen?

Hallo,
ich verstehe jetzt die Frage nicht ganz. Klar kannst Du zur Suche/Ersetzen mit str_replace() arbeiten. Aber es ist wohl unmöglich zielsicher Links in einem „Freitext“ zu finden. Du kannst zwar nach ‚www‘ suchen oder nach ‚http‘ aber du findest damit nie alle Links und viele falsche Strings (die keine Links sind).
Wenn Deine Frage aber darauf abzielt aus dem Seitentext nur das Title Tag mittels reg-exps zu extrahieren, kannst Du z.B. folgenden regulären Ausdruck nehmen (also mit preg_replace):
$str = preg_replace(/^.+/, ‚‘, $str);
$str = preg_replace(/.+$/, ‚‘, $str);
Grüße
TomQB
http://twitter.com/Tomqb

Hallo,
ich verstehe jetzt die Frage nicht ganz. Klar kannst Du zur
Suche/Ersetzen mit str_replace() arbeiten. Aber es ist wohl
unmöglich zielsicher Links in einem „Freitext“ zu finden. Du
kannst zwar nach ‚www‘ suchen oder nach ‚http‘ aber du findest
damit nie alle Links und viele falsche Strings (die keine
Links sind).

wenn mann alle Zeichenketten, die http://*.* enthalten (* = alles außer z.B. Leerzeichen) als String finded, wäre das schon sehr gut… (wie du siehst, macht wer-weiss-was das ja auch so)

Wenn Deine Frage aber darauf abzielt aus dem Seitentext nur
das Title Tag mittels reg-exps zu extrahieren, kannst Du z.B.
folgenden regulären Ausdruck nehmen (also mit preg_replace):
$str = preg_replace(/^.+/, ‚‘, $str);
$str = preg_replace(/.+$/, ‚‘, $str);

Das hab ich schon längst :wink:

Grüße
TomQB
http://twitter.com/Tomqb

Danke für die antwort. Du hast mich aber auf ne Idee gebracht…

P.S. Anders als in Perl müssen Reguläre Ausdrücke in PHP in Anführungsstrichen stehen :wink:

Nachtrag:
Ich hab jetzt einen Passenden Ausdruck gefunden (das war meine Idee):
/http://[^ \s]+.[^ \s]+/
und es funktioniert