Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[Funktion] URLs automatisch erkennen und verlinken [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Funktion] URLs automatisch erkennen und verlinken


 
CentennialDawg
10-06-2006, 12:48 
 
Hallo!

Gibt es eine PHP-Funktion, die URLs automatisch erkennt und mit HTML in einen Link umwandelt?

Beispiel: in einem Text wird eine URL angegeben:

Text Text Text http://www.angegebene-homepage.de Text Text Text

Ist es mit PHP nun möglich, nur die URL in einen Link zumzuwandeln, den Text unverändert wiederzugeben?`

Vielen Dank für die Hilfe!!

Gruß
CentennialDawg

edit:
ok, wie ich sehe gibt es diese Funktion, aber wie heißt sie? ich habs nämlich noch nicht gefunden...

 
hhcm
10-06-2006, 12:53 
 
Mir regex?

Sprich preg_replace (http://de.php.net/preg_replace)

 
penizillin
10-06-2006, 13:09 
 
und du hast bei google (http://www.google.de/search?hl=de&q=php+url+in+link+umwandeln&meta=) wirklich gar nicht gefunden? hm...

 
Luke
10-06-2006, 13:20 
 
$string = preg_replace("/([a-zA-Z0-9]+):\/\/([^\s\"\]]+)/e"], "parse_url('\\1', '\\2')", $string);

function parse_url($protocol, $link)
{
if(strlen($link) > 60)
$slink = substr($link, 0, 60/2)."...".substr($link, -(60/2-3));
else
$slink = $link;

return "<a href=\"".$protocol."://".$link."\">".$protocol."://".$slink."</a>";
}

Parsed die URL und kürzt sie auf 60 Zeichen

 
Slava
10-06-2006, 19:23 
 
Original geschrieben von Luke
$string = preg_replace("/([a-zA-Z0-9]+):\/\/([^\s\"\]]+)/e"], "parse_url('\\1', '\\2')", $string);
bubububub://bljablja ist also url?


function parse_url($protocol, $link)
{
if(strlen($link) > 60)
$slink = substr($link, 0, S_MAX_URL_LENGTH/2)."...".substr($link, -(S_MAX_URL_LENGTH/2-3));
else
$slink = $link;

return "<a href=\"".$protocol."://".$link."\">".$protocol."://".$slink."</a>";
}

Parsed die URL und kürzt sie auf 60 Zeichen
hast du nicht so ein komische gefühl, dass parse_url eine standartfunktion von php ist, und erwartet nur 1 Parameter?
http://de2.php.net/manual/de/function.parse-url.php

 
Luke
10-06-2006, 19:27 
 
> bubububub://bljablja ist also url?
exacto. ed2k://|file|Principia.Discordia.pdf|9646345|4D2A902BF920FCE9A4F9BC5998D57B96|/ auch.

> hast du nicht so ein komische gefühl, dass parse_url eine standartfunktion von php ist

jetzt wo du's sagst. Aber hatte es in ner Klasse, da hat's keine probleme gemacht

 
Slava
10-06-2006, 19:52 
 
einfach und ohne extras
$pattern = '/\b((http:\/\/|https:\/\/|www\.)[^\s]+\.[a-z]{2,4})\b/s';
$ersatz = '<a href="$1">$1</a>';


echo preg_replace($pattern, $ersatz, $TXT);

 
Luke
10-06-2006, 19:58 
 
So geht's auch


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:59 Uhr.