Probleme mit preg_replace :-(

E

encom

Hallo, kann mir eventuell einer helfen?

ich habe folgendes

[ color=red]HALLO[ /color]

Erstes Problem, wie kann ich das Hallo nun in rot ausgeben?
Zweites Problem, das rot hinter color= ist dynamisch und kommt aus einer Combobox ich kann also im preg_replace nicht einfach red angeben. Wie mache ich das richtig?

Danke
 
Code:
$pattern = "/\[color=(.*)\](.*)\[\/color\]/";
$replace = "<span style=\"color:\\1\">\\2</span>";
preg_replace($pattern, $replace, $string);
Ungetestet, aber prinzipiell sollte es so funktionieren.
 
Danke dir, klappt echt toll.

Kannst du auch sagen wie man das am besten mit Listen macht?

also < ol>< li>dann mehrere Einträge< /ol>< /li> ?

Danke
 
So dass die Listen rot sind ? Geht das so nicht ? Dann nimm stat <span> mal <div>

PS: Man sollte Tags richtig ineinanderschachteln. Also nicht <ol><li></ol></li> sondern <ol><li></li></ol> ;)
 
Sorry, das mit dem < ol>< li>< /li>< /ol> ist mir klar.

ich will die liste nicht rot machen sondern ich komme mit der Umsetzung nicht zurecht. Also ich schreibe mehrere Zeilen untereinander danach klicke ich auf meinen Button und es wird ein [ liste] davor und ein [ /liste] dahinter gesetzt, das sol nun automatisch umgewandelt werden zu < ol> dann jeder Eintrag < li> Eintragsname < /li> und am ende wieder ein < /ol>

Danke
 
Ich sehe gerade, hier im Forum ist das mit den Listen auch merkwürdg gelöst.

< li>wird für jeden Eintrag geöffnet aber nie geschlossen
 
das könntest du z.B. so machen:
Code:
$txt=preg_replace('/\[liste\]\s+(.*?)\s+\[\/liste\]/sei',"'<ol>'.preg_replace('/^/m','<li>','\\1').'</ol>'",$txt);

(Dass die <li> keinen schliessenden Tag haben, ist erlaubt, in der HTML-Referenz wird der schliessende Tag sogar eher beiläufig erwähnt.)
 
Danke dir,

ich habe dein Beispiel mal so übernommen, leider funktioniert es nicht.
Es wird nichts umgewandelt. Ich sehe aber auch nicht woran es liegen könnte.

Wäre toll wenn noch einer eine Idee hätte

Danke
 
@fatalus:
Was bedeutet das 'e' als "Option"? Das Zeichen hab in der Manpage von "perlre" nicht gefunden. Ist das PHP spezifisch? Verwendet preg_replace nicht exakt dieselben RegExps wie Perl?

Gruß,
matt
 
Verwendet preg_replace nicht exakt dieselben RegExps wie Perl?
Doch, die Syntax der Pattern und demnach auch die zur Verfügung stehenden Modifikatoren sollten eigentlich identisch mit denen aus Perl sein.

Der Modifikator e ist jedoch PHP spezifisch, wie hier nachzulesen ;)
 
Zurück