[img] in [url] seperat parsen lassen

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
SemiX
Mitglied
Beiträge: 154
Registriert: 05.09.2004 19:39
Wohnort: NRW
Kontaktdaten:

[img] in [url] seperat parsen lassen

Beitrag 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:
Kein Privatsupport. Das Forum leistet gute Hilfe- und bessere als ich allemal... (:
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
SemiX
Mitglied
Beiträge: 154
Registriert: 05.09.2004 19:39
Wohnort: NRW
Kontaktdaten:

Beitrag 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....
Kein Privatsupport. Das Forum leistet gute Hilfe- und bessere als ich allemal... (:
Antworten

Zurück zu „Coding & Technik“