Bastian: ereg_replace

Hallo was habe ich vergessen? Es liegt an der geschlossenen Klammer (in $text steht "(" nicht "("). Nun gut das Problem.

Diese Funktioniert nicht, Script bricht ab:
$text = ereg_replace(":-(","<img border='0' src='".$cfg['graficPath']."/smilies/traurig.gif'>",$text);

Diese Funktioniert aber:
 #$text = ereg_replace(":-)","<img border='0' src='".$cfg['graficPath']."/smilies/traurig.gif'>",$text);

Der einzigste Unterschied zwischen des beiden Funktionsaufrufen liegt zwischen der einmal geschlossenen und einmal offenen Klammer.
Danke für Hilfe

  1. #$text = ereg_replace(":-)","<img border='0' src='".$cfg

    sorry diese zeile funktioniert natürlich auch wenn sie nicht auskommentiert ist.

  2. Moin!

    Diese Funktioniert nicht, Script bricht ab:
    $text = ereg_replace(":-(","<img border='0' src='".$cfg['graficPath']."/smilies/traurig.gif'>",$text);

    Diese Funktioniert aber:
     #$text = ereg_replace(":-)","<img border='0' src='".$cfg['graficPath']."/smilies/traurig.gif'>",$text);

    Reguläre Ausdrücke kennen Zeichen mit besonderer Bedeutung. Runde Klammern gehören dazu. Solche Zeichen muss man mit einem Backslash entschärfen, wenn man das eigentliche Zeichen meint.

    Für deinen Zweck ist es aber vollkommen ausreichend, mit str_replace() zu arbeiten. Die Funktion ist schneller und tut genau, was du willst.
    http://www.php.net/manual/en/function.str-replace.php

    Wenn du unbedingt reguläre Ausdrücke verwenden willst, nimm lieber preg_*-Funktionen - die sind angeblich auch schneller als ereg, und außerdem binärsicher. Außerdem tun sie das gleiche - du hast also eigentlich nur Vorteile.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)