preg_replace

Hallo,

ich habe mir ein eigenes Gästebuch mit PHP erstellt. Darin sollen Smilies eingefügt werden, die dann in eine Grafik umgewandelt werden.

Das klappt auch alles hervorragend, nur wird vor und hinter dem Smilie der Doppelpunkt angezeigt, und wird der letzte Smilie (cry) eingefügt, auch noch die Klammer. Kann mir einer sagen, warum?

Hier der Code:

//Smilies in Grafiken umwandeln
$suche = array (":smile:",
 ":grins:",
 ":lol:",
 ":wink:",
 ":razz:",
 ":confused:",
 ":surprised:",
 ":eek:",
 ":rolleyes:",
 ":redface:",
 ":cool:",
 ":mrgreen:",
 ":mad:",
 ":sad:",
 ":cry:");

$ersetze = array ("" 
"", 
"", 
"", 
"", 
"",
"", 
"", 
"", 
"", 
"", 
"", 
"", 
"", 
")");

$text = preg\_replace($suche, $ersetze, $nachricht);

Vielen Dank,

Kerstin

im ersten Array hast Du 14 Elemente und im zweiten 13…
Ich denke mal, dass es daran liegt… :wink:

Hi Munich,

im ersten Array hast Du 14 Elemente und im zweiten 13…
Ich denke mal, dass es daran liegt… :wink:

Wieso 14 bzw. 13 Elemente? Da sind doch in beiden 15, oder?

Kerstin

Hallo Kerstin,

nimm str_replace statt preg_replace. Es ist schneller, und du brauchst die Funktionalität der regulären Ausdrücke nicht.

Warum die „:“ bleiben: preg_replace erwartet einen regulären Ausdruck, der beginnt und endet mit einem Trennzeichen, welches nicht mit zum Ausdruck gehört. Da du vorn und hinten einen : hast, interpretiert der das als Trennzeichen (wenn die : nicht da wären, gäbe es gleich einen Fehler).

Wie genau reguläre Ausdrücke funktionieren, ist zum Beispiel unter http://www.regenechsen.de/phpwcms/index.php?id=66,0,… erklärt.

Alexander

Hallo,

Ergänzung:

dem Smilie der Doppelpunkt angezeigt, und wird der letzte
Smilie (cry) eingefügt, auch noch die Klammer. Kann mir einer
sagen, warum?

Die Klammer im String ist zu viel :smile:

)“);

Alexander

Hallo Alexander,

nimm str_replace statt preg_replace. Es ist schneller, und du brauchst die Funktionalität der regulären Ausdrücke nicht.

Ja, hab ich jetzt auch gemacht.

dem Smilie der Doppelpunkt angezeigt, und wird der letzte
Smilie (cry) eingefügt, auch noch die Klammer. Kann mir einer
sagen, warum?

Die Klammer im String ist zu viel :smile:

Oh man, so ein dummer Fehler!

Vielen Dank!

Kerstin

15 und 14…
beim unteren fehlt ein Komma…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]