Antworten auf deine Fragen:
Neues Thema erstellen

Problem mit preg_replace(), weiß nicht weiter...

MrManko

Nicht mehr ganz neu hier

Hi @ all.

Ich habe ein kleines bis mittelschweres Problem mit preg_replace. Der Text wird einfach nicht richtig ersetzt. Hier der Code:
Das ist der vom Benutzer eingegeben Text:

HTML:
[color=#660000]Foo[/color]
Das ist mein Parser für die BBCodes:
PHP:
<?php

   function bbcode2html($string) {

      $string = str_replace("[b]","<b>",$string);
      $string = str_replace("[/b]","</b>",$string);

      $string = str_replace("[i]","<i>",$string);
      $string = str_replace("[/i]","</i>",$string);

      $string = str_replace("[u]","<u>",$string);
      $string = str_replace("[/u]","</u>",$string);

      $string = str_replace("[center]","<center>",$string);
      $string = str_replace("[/center]","</center>",$string);

      $string = preg_replace('/\[url=([^ ]+).*\](.*)\[\/url\]/', '<a href="$1" target="_blank">$2</a>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\|(.*)\|(.*)\|(.*)\|(.*)\[\/image\]/', '<div class="pic_$6"><img src="../images/userpics/fullres/$1" alt="$4" /><br />Quelle:$3; Fotograf:$2<br />$5</div>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\[\/image\]/', '<div class="pic_$2"><img src="images/userpics/thumbnail/$1" alt="$4" /></div>', $string);
      $string = preg_replace('|\[color=(.*)\]|', '<span style="color:#$1;">', $string);
      $string = preg_replace('|\[/color\]|','</span>', $string);
      $string = preg_replace('|\[font-size=(.*)\]|', '<span style="font-size:$1pt;">', $string);
      $string = preg_replace('|\[/font-size\]|','</span>', $string);

      return $string;

   }

?>
Und das ist die Ausgabe im Quelltext, nachdem das Dokument geparst wurde:
Code:
<span style="color:#660000]Foo[/color;">
Meine Frage ist jetzt, warum diese Ausgabe dabei rauskommt und nicht

Code:
<span style="color:#660000;">Foo</span>
Ich hoffe ihr könnt mir weiterhelfen....

Vielen Dank

MrManko
 

Christian

verpeilt & verschallert

AW: Problem mit preg_replace(), weiß nicht weiter...

Du hast die Modifikatoren vergessen.
PHP:
   function bbcode2html($string) {

      $string = str_replace("[b]","<b>",$string);
      $string = str_replace("[/b]","</b>",$string);

      $string = str_replace("[i]","<i>",$string);
      $string = str_replace("[/i]","</i>",$string);

      $string = str_replace("[u]","<u>",$string);
      $string = str_replace("[/u]","</u>",$string);

      $string = str_replace("[center]","<center>",$string);
      $string = str_replace("[/center]","</center>",$string);

      $string = preg_replace('/\[url=([^ ]+).*\](.*)\[\/url\]/Uis', '<a href="$1" target="_blank">$2</a>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\|(.*)\|(.*)\|(.*)\|(.*)\[\/image\]/Uis', '<div class="pic_$6"><img src="http://www.psd-tutorials.de/modules/Forum/images/userpics/fullres/$1" alt="$4" /><br />Quelle:$3; Fotograf:$2<br />$5</div>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\[\/image\]/Uis', '<div class="pic_$2"><img src="images/userpics/thumbnail/$1" alt="$4" /></div>', $string);
      $string = preg_replace('|\[color=[#]?(.*)\]|Uis', '<span style="color:#$1;">', $string);
      $string = preg_replace('|\[/color\]|Uis','</span>', $string);
      $string = preg_replace('|\[font-size=(.*)\]|Uis', '<span style="font-size:$1pt;">', $string);
      $string = preg_replace('|\[/font-size\]|Uis','</span>', $string);

      return $string;

   }
#returns: <span style="color:#abcdef;">abc</span>
echo bbcode2html('[color=#abcdef]abc[/color]');
 
Zuletzt bearbeitet:

beautyIAF

I like HDR

AW: Problem mit preg_replace(), weiß nicht weiter...

Hallo,

ich hab die Zeile zum Code ersetzen, mal für dich angepasst, dann klappt deine Function auch:

Code:
<?php

      $string = preg_replace('|\[color=([^/]+)]|', '<span style="color:$1;">', $string);
<?

Hier noch die ganze function.

<?php

   function bbcode2html($string) {

      $string = str_replace("[b]","<b>",$string);
      $string = str_replace("[/b]","</b>",$string);

      $string = str_replace("[i]","<i>",$string);
      $string = str_replace("[/i]","</i>",$string);

      $string = str_replace("[u]","<u>",$string);
      $string = str_replace("[/u]","</u>",$string);

      $string = str_replace("[center]","<center>",$string);
      $string = str_replace("[/center]","</center>",$string);

      $string = preg_replace('/\[url=([^ ]+).*\](.*)\[\/url\]/', '<a href="$1" target="_blank">$2</a>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\|(.*)\|(.*)\|(.*)\|(.*)\[\/image\]/', '<div class="pic_$6"><img src="http://www.psd-tutorials.de/modules/Forum/images/userpics/fullres/$1" alt="$4" /><br />Quelle:$3; Fotograf:$2<br />$5</div>', $string);
      $string = preg_replace('/\[image=([^ ]+).*\](.*)\[\/image\]/', '<div class="pic_$2"><img src="http://www.psd-tutorials.de/modules/Forum/images/userpics/thumbnail/$1" alt="$4" /></div>', $string);
      $string = preg_replace('|\[color=([^/]+)]|', '<span style="color:$1;">', $string);
      $string = preg_replace('|\[/color]|','</span>', $string);
      $string = preg_replace('|\[font-size=([^/]+)\]|', '<span style="font-size:$1pt;">', $string);
      $string = preg_replace('|\[/font-size\]|','</span>', $string);

      return $string;
	
   }

?>

Schönen Tag..
 
Zuletzt bearbeitet:

MrManko

Nicht mehr ganz neu hier

AW: Problem mit preg_replace(), weiß nicht weiter...

Danke an alle :)

Mit eurer Hilfe konnte ich das Problem lösen.

Die Links mit Gier bei preg_replace sind auch in meinem Fav Ordner gelandet ;)

MrManko
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben