• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

php preg_replace

C

cornflakes4747

Gast
Hiho.
Ich hab mal ne Frage zur PHP-Funktion preg_replace.

$neuertext=preg_replace('/\[b\] (.*) \[\/b\]/','<b>\\1</b>',$altertext);

Dieses Beispiel wandelt einen String wie zB
[b ] tralala [/b ]
in
<b> tralala </b>
um.
Ich möchte jetzt aber, dass das nur geschieht, wenn zwischen [b ] und [/b ] ein bestimmter Text, zB. "blubb", nicht vorkommt.
Wie kann ich der Funktion statt (.*) irgendwas geben wie (alles außer blubb)?
Dazu hab ich auch auf php.net und ähnlichen Seiten nix gefunden...
Bin für jede Hife dankbar.
cornflakes4747
 
Gibts da wirklich keine andere Möglichkeit?
Weil mir das bei meinem speziellen Problem nicht wirklich helfen würde...
Trotzdem danke schonmal.
 
marky68 am 11.11.2004 13:59 schrieb:
ak1347F am 10.11.2004 19:49 schrieb:
Dann musst du, denn Text zwischen b abspeichern und den einzelnd überprüfen

schwachsinn. du schreibst einfach noch ein [^blubb] in die regex.

Meinst du so?
$neuertext=preg_replace('/\[b\] (.*[^blubb]) \[\/b\]/','<b>\\1</b>',$altertext);
Weil das funktioniert irgendwie nicht. Das hab ich schon probiert...
Dann gibt er gar nichts mehr zurück...
 
$neuertext=preg_replace('/\[b\] (.*) [^blubb] \[\/b\]/','<b>\\1</b>',$altertext);

ich wuerde aber sowieso lieber

$neuertext=preg_replace('/\[b\](0-9a-zA-Z[^blubb])\[\/b\]/','<b>\\1</b>',$altertext);

machen. gibt weniger probleme
(sonderzeichen fehlen, hatte ich keine lust dabeizuschreiben)
 
nagut vielen Dank.
Ich frag dich sicher nochmal öfter irgendwas. Jetzt hab ich jemanden gefunden der Ahnung von dieser blöden Funktion hat :-P
bzw. weißt du zufällig eine Seite im Internet wo diese Sachen wirklich gescheit stehen? php.net is ja ganz gut aber grad bei den ganzen preg_XXX sachen isses irgendwie mau...

edit:
Und da gehts schon los.
So im großen und ganzen funktionierts jetzt.
Allerdings schlägt die Funktion nicht mehr an, wenn ein Zeilenumbruch vorkommt. Argh ich hasse es.
Was kann man denn jetzt tun damit er Zeilenumbrüche einfach ignoriert? Bzw. gibts eine Funktion um Zeilenumbrüvhe zu entfernen? Weil nl2br macht ja nur zusätzlich <br /> rein...
 
cornflakes4747 am 11.11.2004 16:08 schrieb:
nagut vielen Dank.
Ich frag dich sicher nochmal öfter irgendwas. Jetzt hab ich jemanden gefunden der Ahnung von dieser blöden Funktion hat :-P
bzw. weißt du zufällig eine Seite im Internet wo diese Sachen wirklich gescheit stehen? php.net is ja ganz gut aber grad bei den ganzen preg_XXX sachen isses irgendwie mau...

ich finde diesen c't-Artikel sehr gelungen.(kostet ja nur 50 cent) die regexps setzt du einfach normal mit preg_replace() ein.

edit:
Und da gehts schon los.
So im großen und ganzen funktionierts jetzt.
Allerdings schlägt die Funktion nicht mehr an, wenn ein Zeilenumbruch vorkommt. Argh ich hasse es.
Was kann man denn jetzt tun damit er Zeilenumbrüche einfach ignoriert? Bzw. gibts eine Funktion um Zeilenumbrüvhe zu entfernen? Weil nl2br macht ja nur zusätzlich <br /> rein...

nicht dass ich wuesste. entweder man macht es vorher so:
$text = str_replace("\n","",$text);
oder man aendert die regexp. poste mal deine.
 
edit(Hier stand etwas was inzwischen nicht mehr aktuell ist):
Vielen Dank nochmal. Klappt jetzt alles wie es soll.
 
Zurück