MsvP@habdichliebhasi
Erfahrenes Mitglied
Hallo zusammen ich versuche mich gerade an erweitertem BB-Code bzw. dessen Rückumwandlung.
Zur Erklärung ich habe folgendes Muster:
Und das ganze soll am Ende dann so aussehen:
<img class="CSS-Klasse" width="BREITE" height="HÖHE" src="BILDPFAD" />
Jetzt habe ich schon einiges hin und her probiert mit preg_replace. Aber irgendwie schmeißt der mir immer Murks aus. Weil, dass ist nämlich die Schwierigkeit, es kann auch vorkommen, dass die BB-Codes nur so aussehen:
Mein letzter Versuch sah jetzt so aus, dass ich für jede Variante eine eigene Ersetzung vorgesehen hatte. Aber anscheinend mag er das nicht. Der nachfolgende Code verursacht immer wieder Fehler bei der Variante 2:
Insgesamt sieht mein Quellcode im Moment so aus:
Ich gehe derzeit davon aus, dass wahrscheinlich auch die anderen BB-Varianten von der 1. REPLACE-Variante beeinflusst werden.
Generell gefällt mir meine Lösung sowieso nicht wirklich. Da ich es sinnvoller fände, wenn es direkt in einer Abfrage mit entweder / oder - Entscheidungen zu machen wäre - leider übersteigt das aber derzeit mein Verständnis für Reguläre Ausdrücke.
Vielen Dank für eure Hilfe******
Ich glaube ich habe meinen Fehler gerade gefunden.
(.*?) das bedeutet "jedes Zeichen, egal ob es vorkommt".
Das macht natürlich keinen Sinn.
Ich habe es jetzt dahingehend geändert:
Und siehe da - es scheint zu funktionieren.
Zur Erklärung ich habe folgendes Muster:
Code:
[ img=CSS-KLASSE w=BREITE h=HÖHE]BILDPFAD[ /img]
Und das ganze soll am Ende dann so aussehen:
<img class="CSS-Klasse" width="BREITE" height="HÖHE" src="BILDPFAD" />
Jetzt habe ich schon einiges hin und her probiert mit preg_replace. Aber irgendwie schmeißt der mir immer Murks aus. Weil, dass ist nämlich die Schwierigkeit, es kann auch vorkommen, dass die BB-Codes nur so aussehen:
Code:
Variante 1: [ img]BILDPFAD[ /img]
Variante 2: [ img=CSS-KLASSE]BILDPFAD[ /img]
Variante 3: [ img w=BREITE h=HÖHE]BILDPFAD[ /img]
Variante 4: [ img=CSS-KLASSE w=BREITE h=HÖHE]BILDPFAD[ /img]
PHP:
$search = '/\[ img=(.*?)\ w=(.*?)\ h=(.*?)\](.*?)\[ \/img\]/si';
$replace = '<img class="\\1" width="\\2" height="\\3" src="\\4" />';
$beitext = preg_replace($search, $replace, $beitext);
Insgesamt sieht mein Quellcode im Moment so aus:
PHP:
// Variante 4
$search = '/\[ img=(.*?)\ w=(.*?)\ h=(.*?)\](.*?)\[ \/img\]/si';
$replace = '<img class="\\1" width="\\2" height="\\3" src="\\4" />';
$beitext = preg_replace($search, $replace, $beitext);
// Variante 3
$search = '/\[ img[\s]w=(.*?)[\s]h=(.*?)\](.*?)\[ \/img\]/si';
$replace = '<img width="\\1" height="\\2" src="\\3" />';
$beitext = preg_replace($search, $replace, $beitext);
// Variante 2
$search = '/\[ img=(.*?)\](.*?)\[\ /img\]/si';
$replace = '<img class="\\1" src="\\2" />';
$beitext = preg_replace($search, $replace, $beitext);
// Variante 1
$beitext = preg_replace('/\[ IMG\](.*?)\[ \/IMG\]/si', '<img src="\\1" border="0">', $beitext);
Ich gehe derzeit davon aus, dass wahrscheinlich auch die anderen BB-Varianten von der 1. REPLACE-Variante beeinflusst werden.
Generell gefällt mir meine Lösung sowieso nicht wirklich. Da ich es sinnvoller fände, wenn es direkt in einer Abfrage mit entweder / oder - Entscheidungen zu machen wäre - leider übersteigt das aber derzeit mein Verständnis für Reguläre Ausdrücke.
Vielen Dank für eure Hilfe******
Ich glaube ich habe meinen Fehler gerade gefunden.
(.*?) das bedeutet "jedes Zeichen, egal ob es vorkommt".
Das macht natürlich keinen Sinn.
Ich habe es jetzt dahingehend geändert:
Code:
$search = '/\[ IMG=(\w+)\ W=(\d+)\ H=(\d+)\](.*?)\[ \/IMG\]/si';
Und siehe da - es scheint zu funktionieren.