• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

links ersetzen

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:

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;
}
zum testen habe ich folgenden text verwendet:
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]
die funktion gibt als ergebnis zurück:
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]
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.
 
Zuletzt bearbeitet:
Werbung:
sorry, bin zwar kein fan vom pushen, aber denke, dass es sicherlich jemanden gibt, der mir helfen kann, nur dass der Thread durch den Zeitpunkt etwas untergegangen ist. Würde mich über Hilfe sehr freuen.
 
Zurück
Oben