mustang
Mitglied
Hallo Leute,
habe ein Problem mit dem ersetzen von Links per PHP, sodass man sie anklicken kann. Das ganze ist für ein Forum, in dem ich auch BBCode verwende. Das heißt es gibt in einem Post bereits URL's, die mit [ url]www.beispiel.de[ /url] oder [ url=http://www.beispiel.de]huhu[ /url] gekennzeichnet sind. Diese werden automatisch vom BBCode-Parser in anklickbare Links umgewandelt. Andere URL's, die plain in den Post geschrieben werden, will ich nun anklickbar machen.
Dazu dachte ich mir, dass ich einfach vor dem BBCode-Parser um die URL's ein ... schreibe, damit der BBCode-Parser nicht durcheinander kommt.
Habe mich bisschen im Internet umgesehen und diverse Funkionen gefunden, die Links anklickbar machen, das Problem ist allerdings die Kombination, dass schon markierte URL's nicht noch einmal umgewandelt werden sollen.
Ich habe nun folgende Funktion zusammengebastelt:
zum testen habe ich folgenden text verwendet:
die funktion gibt als ergebnis zurück:
Das heißt sie ignoriert schon richtig die bereits markierten URL's, findet aber komischerweise nur die URL in der ersten Zeile. Ich kann in die erste Zeile jegliche URL kopieren und er markiert sie richtig, aber nie die in den Zeilen darunter. Lasse ich die Funktion zweimal über den Text laufen, findet die Funktion keine weiteren URL's....
Würde mich über Hilfe echt freuen, komme einfach nicht weiter.
habe ein Problem mit dem ersetzen von Links per PHP, sodass man sie anklicken kann. Das ganze ist für ein Forum, in dem ich auch BBCode verwende. Das heißt es gibt in einem Post bereits URL's, die mit [ url]www.beispiel.de[ /url] oder [ url=http://www.beispiel.de]huhu[ /url] gekennzeichnet sind. Diese werden automatisch vom BBCode-Parser in anklickbare Links umgewandelt. Andere URL's, die plain in den Post geschrieben werden, will ich nun anklickbar machen.
Dazu dachte ich mir, dass ich einfach vor dem BBCode-Parser um die URL's ein ... schreibe, damit der BBCode-Parser nicht durcheinander kommt.
Habe mich bisschen im Internet umgesehen und diverse Funkionen gefunden, die Links anklickbar machen, das Problem ist allerdings die Kombination, dass schon markierte URL's nicht noch einmal umgewandelt werden sollen.
Ich habe nun folgende Funktion zusammengebastelt:
PHP:
function parseurl ($text) {
$pattern = array("%(^|\s\S[^/]=])((http://|ftp://)[.-a-zA-Z0-9/]+)%i",
"%(^|\s\S[^/]=])((www)[.-a-zA-Z0-9/]+)%i");
$replace = array("[url]$2[/url]",
"[url]http://$2[/url]");
$text = preg_replace($pattern , $replace , $text);
return $text;
}
Code:
http://google.de/-sdf/asdf
google.de/-sdf/asdf
http://www.google.de/-sdf/asdf
www.google.de/-sdf/asdf
[ url=http://google.de/-sdf/asdf]test[ /url]
[ url=http://www.google.de/-sdf/asdf]www.google.de/-sdf/asdf[ /url]
[ url=www.google.de/-sdf/asdf]test[ /url]
[ url]http://www.google.de/-sdf/asdf[ /url]
Code:
[ url]http://google.de/-sdf/asdf[ /url]
google.de/-sdf/asdf
http://www.google.de/-sdf/asdf
www.google.de/-sdf/asdf
[ url=http://google.de/-sdf/asdf]test[ /url]
[ url=http://www.google.de/-sdf/asdf]www.google.de/-sdf/asdf[ /url]
[ url=www.google.de/-sdf/asdf]test[ /url]
[ url]http://www.google.de/-sdf/asdf[ /url]
Würde mich über Hilfe echt freuen, komme einfach nicht weiter.
Zuletzt bearbeitet: