bbcode: urls

prawn

Mitglied
Hey!
Ich hab schon gesucht, habe aber nichts gefunden, entschuldigt, wenn es schon etwas darüber gibt!

Ich wollte fragen, ob jemand ein fertiges Scriptlein hat, mit ich meine $Text variable automatisch urls Linken lassen kann.

Was ich meine kennt ihr: HTML ist in einem Forum nicht erlaubt aber wenn jemand http://www.url.com eingibt, wird der Link automatisch generiert.

Ich hab bis jetzt sowas, aber das funktioniert bei mehreren Links nicht und ich weiß nicht warum:

PHP:
// "URLS" into "URLS"
$text = eregi_replace("([ \r\n])[ url]http://[ /url]([^ ,\r\n]*)","\\1[ url]http://\\2[ /url]",$text);
$text = eregi_replace("([ \r\n])[ url]https://[ /url]([^ ,\r\n]*)","\\1[ url]https://\\2[ /url]",$text);
$text = eregi_replace("([ \r\n])[ url]ftp://[ /url]([^ ,\r\n]*)","\\1[ url]ftp://\\2[ /url]",$text);
$text = eregi_replace("([ \r\n])www\\.([^ ,\r\n]*)","\\1[ url]http://www.\\2[ /url]",$text);
$text = eregi_replace("^[ url]http://[ /url]([^ ,\r\n]*)","[ url]http://\\1[ /url]",$text);
$text = eregi_replace("^[ url]https://[ /url]([^ ,\r\n]*)","[ url]https://\\1[ /url]",$text);
$text = eregi_replace("^[ url]ftp://[ /url]([^ ,\r\n]*)","[ url]ftp://\\1[ /url]",$text);
$text = eregi_replace("^www\\.([^ ,\r\n]*)","[ url]http://www.\\1[ /url]",$text);

// "[ URL]URLS[ /URL]" into "URLS"
$text = eregi_replace("\\[ url\\]www.([^\\[]*)\\[ /url\\]","<a href=\"http://www.\\1\" target=_blank>\\1</a>",$text);
$text = eregi_replace("\\[ url\\]([^\\[]*)\\[ /url\\]","<a href=\"\\1\" target=_blank>\\1</a>",$text);

//"[ URL=URLS]desc[ /URL]" into "URLS with desc"
$text = eregi_replace("\\[ url=\"([^\"]*)\"\\]([^\\[]*)\\[ \\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$text);
$text = eregi_replace("\\[ url=([^\"]*)\\]([^\\[]*)\\[ \\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$text);

// "[ EMAIL]EMAILS[ /EMAIL]" into "EMAILS"
$text = eregi_replace("\\[ email\\]([^\\[]*)\\[ /email\\]","<a href=\"mailto:\\1\">\\1</a>",$text);

danköö :)
 
den fehler hatte ich auch schon, das blöde ist das preg_replace() ausnahmslos alle urls gleich generiert. is ja klar, es entspricht ja jedesmal nen treffer wenn er url etc. findet. Ne möglichkeit wäre es, alle treffer vorher in ein Array einzulesen. und dann nacheinander zu generieren. ich weiß aber noch nicht so richtig wie das dann aussehen soll, da ich mich erst selbst noch ransetzen muss.

ne 2. möglichkeit wäre aber diese funktion zu nutzen, die nur den ersten treffer im text zeigt oder den 2. oder den 3. usw. hab schon was passendes in meinen büchern gefunden.

auf jedenfall möchte ich nicht die vorgefertigten BB-Codes nehmen, die man sich irgendwo downloaden kann, da ich ja selbst auch was lernen möchte. auch wenn dann meine variante enorm kompliziert gestalltet ist :p
 
hatte mich mit preg_replace noch nicht so beschäftigt, deswegen hab ich da nich so die erfahrung, kannst ja mal posten,wenn du was hast.
 
Zurück