BB-Code mit Smilies Fehlermeldung

h4dhunTer

Erfahrenes Mitglied
Hallo,
ich habe ein BB-Code, der aber leider rumzickt.
PHP:
<?php
## Hier kommen noch andere Funktionen

          $text2 = preg_replace(":-)","<img src=\"images/forum/pleased.gif\">", $text2);
          $text2 = preg_replace(":)","<img src=\"images/forum/pleased.gif\">", $text2);
          $text2 = preg_replace("=)","<img src=\"images/forum/pleased.gif\">", $text2);
          $text2 = preg_replace(":-(","<img src=\"images/forum/frown.gif\">", $text2);
          $text2 = preg_replace(":(","<img src=\"images/forum/frown.gif\">", $text2);
          $text2 = preg_replace("=(","<img src=\"images/forum/frown.gif\">", $text2);
          $text2 = preg_replace(":-D","<img src=\"images/forum/gigagrossessmile.gif\">", $text2);
          $text2 = preg_replace(":D","<img src=\"images/forum/gigagrossessmile.gif\">", $text2);
          $text2 = preg_replace("=D","<img src=\"images/forum/gigagrossessmile.gif\">", $text2);
          $text2 = preg_replace(";-)","<img src=\"images/forum/wink.gif\">", $text2);
          $text2 = preg_replace(";)","<img src=\"images/forum/wink.gif\">", $text2);
          $text2 = preg_replace("*cool*","<img src=\"images/forum/cool.gif\">", $text2);
          $text2 = preg_replace("*bigsmile*","<img src=\"images/forum/bigsmile.gif\">", $text2);
          $text2 = preg_replace("*lol*","<img src=\"images/forum/lol.gif\">", $text2);
          $text2 = preg_replace("*mad*","<img src=\"images/forum/mad.gif\">", $text2);
          $text2 = preg_replace("*redface*","<img src=\"images/forum/redface.gif\">", $text2);
          $text2 = preg_replace(":-P","<img src=\"images/forum/zunge.gif\">", $text2);
          $text2 = preg_replace(":P","<img src=\"images/forum/zunge.gif\">", $text2);
          $text2 = preg_replace("*rolleyes*","<img src=\"images/forum/rolleyes.gif\">", $text2);
          $text2 = preg_replace("*smile_cool*","<img src=\"images/forum/smile_cool.gif\">", $text2);
          $text2 = preg_replace("*star*","<img src=\"images/forum/star.gif\">", $text2);
          $text2 = preg_replace("*smile*","<img src=\"images/forum/smile.gif\">", $text2);
          $text2 = preg_replace("oO","<img src=\"images/forum/eek.gif\">", $text2);
          $text2 = preg_replace("o0","<img src=\"images/forum/eek.gif\">", $text2);
          $text2 = preg_replace("o.O","<img src=\"images/forum/eek.gif\">", $text2);
          $text2 = preg_replace("o.0","<img src=\"images/forum/eek.gif\">", $text2);
          $text2 = preg_replace("*eek*","<img src=\"images/forum/eek.gif\">", $text2);
          $text2 = preg_replace("*face82*","<img src=\"images/forum/face82.gif\">", $text2);
          $text2 = preg_replace("*exclaim*","<img src=\"images/forum/exclaim.gif\">", $text2);
          $text2 = preg_replace("*question*","<img src=\"images/forum/question.gif\">", $text2);
          $text2 = preg_replace("*idea*","<img src=\"images/forum/idea.gif\">", $text2);
          $text2 = preg_replace("*ahh*","<img src=\"images/forum/ahh.gif\">", $text2);

## Hier gehts dann weiter
?>

Nun bekomme ich auf meiner Seite diesen oder eher gesagt diese Fehler:
Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 100

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 101

Warning: preg_replace(): No ending delimiter '=' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 102

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 103

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 104

Warning: preg_replace(): No ending delimiter '=' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 105

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 106

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 107

Warning: preg_replace(): No ending delimiter '=' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 108

Warning: preg_replace(): No ending delimiter ';' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 109

Warning: preg_replace(): No ending delimiter ';' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 110

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 116

Warning: preg_replace(): No ending delimiter ':' found in /srv/www/htdocs/web124/html/www1/bb-code.php on line 117

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/htdocs/web124/html/www1/bb-code.php on line 122

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/htdocs/web124/html/www1/bb-code.php on line 123

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/htdocs/web124/html/www1/bb-code.php on line 124

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/htdocs/web124/html/www1/bb-code.php on line 125

Wo liegt der Fehler im Code? Habe ich zeichen vergessen

Vielen Dank schonmal für eure Hilfe.
 
Du musst die Suchmuster mit \ versehen, es gibt zeichen, die gelten bei einem Preg_* als Suchmusterirgendwas.

Du findest Hilfen im Google oder im phpmanual

//Edit
ich würde übrigens auch die Suchmuster und Ersetzungsmuster in einem Array speichern.

Und wenn du deine preg_replace's durch str_replace's ersetzt, funktioniert es
 
Der reguläre Ausdrück für [phpf]preg_replace[/phpf] erwartet einen Delimiter.

Aber du brauchst diese Funktion gar nicht, für deine Bedürfnisse reicht [phpf]str_replace[/phpf].
 
Was die Verwendung von [phpf]str_replace[/phpf] angeht, kann ich Kalma nur beipflichten. Bei solch statischen Ausdrücken, ist ein normales String Replacement wesentlich effizienter als ein regulärer Ausdruck.

Den gemachten Fehler würde ich dennoch gerne ein wenig näher hinterleuchten:
Ein PCRE regulärer Ausdruck in PHP benötigt Delimiter zur Kennzeichnung des Beginns und des Endes des regulären Ausdrucks. Das kann so gut wie jedes beliebige Zeichen sein, welches nicht im normalen PCRE-Syntax enthalten ist, also so gut wie jedes Sonderzeichen. Gewöhnlicherweise nehmen viel "=", "/", "$", "?", etc...

Ein Beispiel:
PHP:
preg_replace("%:-\)%","<img src=\"images/forum/pleased.gif\">", $text2);

Nach dem Enddelimiter können dann noch Modifikatoren angefügt werden, aber das als eher uninteressante Anmerkung.
 
Zurück