URL-BBCode konvertieren

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
xpressive
Mitglied
Beiträge: 96
Registriert: 04.06.2004 13:39

URL-BBCode konvertieren

Beitrag 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?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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);
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
xpressive
Mitglied
Beiträge: 96
Registriert: 04.06.2004 13:39

Beitrag 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]
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Master_D
Mitglied
Beiträge: 14
Registriert: 31.01.2006 14:42
Kontaktdaten:

Beitrag 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.
Benutzeravatar
xpressive
Mitglied
Beiträge: 96
Registriert: 04.06.2004 13:39

Beitrag 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.
Germania001
Mitglied
Beiträge: 94
Registriert: 30.01.2004 11:15
Wohnort: Weißenhorn

Beitrag 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
Antworten

Zurück zu „Coding & Technik“