Link in String erkennen, klappt nicht ganz!!

bigtail

Mitglied
Hi,

wenn die Daten aus der Datenbank ausgelesen und angezeigt werden, sollen die Links (http, www, usw) innerhalb des Strings erkannt und als solches angezeigt werden.

Dafür verwende ich folgendes Script:
PHP:
function str2link($string){

$string= preg_replace('/[^href='|href=\\"|\>][^http:\/\/](www.[a-zA-Z0-9._-]+)/', ' http://$1', $string);

$string= preg_replace('/([^href='|href=\\"|\>]http:\/\/[a-zA-Z0-9._-]+|[^href='|href=\\"|\>]https:\/\/[a-zA-Z0-9._-]+|[^href='|href=\\"|\>]ftp:\/\/[a-zA-Z0-9._-]+)/', "<br><br><a href='$0' target='_blank'>$0</a>", $string);

return $string;
}
Es klappt auch mit Links wie http://www.google.de oder http://yahoo.com. wunderbar.

Das Problem ist aber, dass wenn der Link wie folgt aussieht:

http://www.google.de/art/test.php

dann wird nur http://www.google.de als Link erkannt und der Rest nicht.

Kennt jemand eine Lösung

Danke
 
Vielleicht hilft dir meine für das das Guestbook relevante Linkerkennung weiter.
Code:
regular Expression = !http://([a-z0-9\-_]+\.)+[a-z]{2,6}(/?[a-z0-9\-_]+\.)*/?$!i

mfg
 
Ich habe einen Regex, der auch mail und ftp etc umwandelt

PHP:
      $str = preg_replace('#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm',
                          '\1<a href="\2\3">\2\3</a>\4',                            
                $str);
 
Besten Dank für eure Antworten.

PHP:
$str = preg_replace('#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm', 
                          '\1<a href="\2\3">\2\3</a>\4',                             
                $str);

klappt hervorragend!

Danke
 
Zurück