Seite 1 von 1

[img] in [url] seperat parsen lassen

Verfasst: 30.08.2007 21:44
von SemiX
Hi! ^^

Bei mir im Forum werden Hyperlinks am Anfang und am Ende mit kleinen Icons versehen, sodass man diese auch als Links innerhalb eines Textes erkennen kann. Bei Textlinks mag das ja noch passabel aussehen, bei verlinkten Grafiken dagegen sind sie eher störend. Deshalb suche ich nach einer Möglichkeit, Bilder innerhalb von url-Tags getrennt über die bbcode.php parsen zu lassen.

Code: Alles auswählen

	// [url=xxxx://www.phpbb.com]phpBB[/url] code..
	$patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url3'];

	// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
	$patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url4'];
Obiges ist der Standardcode von phpBB und stellt zugleich die beiden Möglichkeiten da, eine Grafik zu verlinken. Der einfachste Weg wäre es wohl, diesen Codeabschnitt zu dublizieren und eine Variante zu erstellen, die [img]-Tags auslässt (auf diese wird dann per $bbcode_tpl['url3'] und $bbcode_tpl['url4'] das Icon zugewiesen), wohingegen sich im weiteren Durchgang ausnahmslos nur um [img]-Tags gekümmert wird ($bbcode_tpl['url5'] & $bbcode_tpl['url6'], auf die das Icon nicht zugewiesen wird). Ich hoffe, es ist verständlich geworden, was ich beabsichtige :oops: Leider sind diese Ersetzungsregeln momentan noch eine Nummer zu hoch für mich...mag mir deshalb jemand helfen? Ich denke, dass die Abschnitte "([^?\n\r\t].*?)" dafür modifiziert werden müssen, aber in wiefern ich das bewerkstelligen soll, habe ich keinen Schimmer :oops:

Verfasst: 31.08.2007 00:03
von gn#36
Das siehst du richtig. Am einfachsten ist es aber denke ich wenn du erst die Beispiele mit IMG Tag bearbeitest. Als Beispiel für den 2. Ausdruck:

Code: Alles auswählen

#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\][ \n\r\t]*?\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\][ \n\r\t]*?\[/url\]#is
Dieser Ausdruck sollte alle

Code: Alles auswählen

[url=xxx][img]url[/img][/url] konstrukte finden und dabei auch Leerzeichen zwischen url und img Tag ignorieren.

Verfasst: 01.09.2007 03:59
von SemiX
errrmm- stimmt, so erspart man es sich, eine Ausnahmeregel für die [url]-Tags zu erstellen und kann den Code stattdessen lassen, wie er ist!

Vielen Dank für deine Antwort gn#36, die Zeile funktioniert ("([^?\n\r\t].*?)" überwiegend durch die bereits in der bbcode.php definierte img-Ersetzungsregel auszutauschen ist einleuchtend :oops: ), sofern man aus den Zeichenklassen die Leerzeichen entfernt....