Seite 1 von 1

URL-BBCode konvertieren

Verfasst: 20.12.2006 22:50
von xpressive
Da viele User ellenlange URLs in ihre Beiträge pasten, möchte ich die bbcode.php insoweit ändern, das alle BB-Codes wie:

Code: Alles auswählen

[url]blah[/url] 
www.blah.de
http://...
www.
-also ALLE URLs automatisch nur in dieses Format konvertiert werden:

Code: Alles auswählen

[url=blah]Klick![/url] 
Habe aber die genau Funktionsweise der bbcode.php noch nicht 100% überblickt. Könnte mir jemand diebezüglich einen Tipp geben, bevor ich das Script abschiesse?

Verfasst: 20.12.2006 23:40
von Miriam
Finde in bbcode.php

Code: Alles auswählen

	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);

	// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
	// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
	// zzzz is optional.. will contain everything up to the first space, newline,
	// comma, double quote or <.
	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);

Code: Alles auswählen

	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">Klick!</a>", $ret);

	// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
	// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
	// zzzz is optional.. will contain everything up to the first space, newline,
	// comma, double quote or <.
	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">Klick!</a>", $ret);

Verfasst: 21.12.2006 01:15
von xpressive
Danke dir, funktioniert super -allerdings nur bei URLs ohne BBCode:

Code: Alles auswählen

www.blah.com
Hier funktioniert es. Aber wenn ein User schreibt:

Code: Alles auswählen

[url]www.blah.com[/url]
sollte das auch mit "Klick!" maskiert werden, da viele User diese Form benutzen (immerhin) -aber der Nachteil hier ist eben auch, das eine Ellenlange eBay-URL z.B. das Forum sprengt! :(


EDIT: Habe es jetzt mal so gelöst:

Code: Alles auswählen

	// We do URLs in several different ways..
	 $bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	 $bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url1']);

	 $bbcode_tpl['url2'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	 $bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url2']);

Ersetzen mit:

	// We do URLs in several different ways..
	 $bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	 $bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', 'KLICK!', $bbcode_tpl['url1']);

	 $bbcode_tpl['url2'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	 $bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', 'KLICK!', $bbcode_tpl['url2']);

Zusammen mit deinem Code werden jetzt alle möglichen URL-Varianten mit "KLICK!" maskiert. :D [/code]

Verfasst: 21.12.2006 10:03
von Miriam
Es gibt da auch ein kleines Javascript, dass beim Drücken der BBCode URL Buttons eine Abfrage nach URL und Beschreibung macht.
Das wäre doch auch was für Dich, oder?

Verfasst: 21.12.2006 10:10
von Master_D
Stimmt, im Rahmen der Anpassung an Firefox wird im javascript für den BBCode zwingend nach einem Titel für den Link gefragt, da kann dan zwar immer noch etwas langes eingegeben werden, aber die Chance ist groß, das da dann kurze Titel genutzt werden.

Verfasst: 21.12.2006 13:08
von xpressive
Bei einer JS-Eingabebox haben die User trotzdem noch die Möglichkeit, URL-BB-Code per Hand einzugeben, also ist es sicher am effizientesten, wenn man das Problem "intern" löst, also jede eingegebene URL bei der Ausgabe in eine maskierte verwandelt, unabhängig davon, in welcher Form sie eingegeben wurde.

Verfasst: 10.01.2007 10:32
von Germania001
Tag Leute.

Hab da auch mal ne Frage dazu.

Wo gibts denn den Java BBCode URL MOD zum download?

N Link wäre eventuell super.

Mercy

MfG

Germania001