Funktion für Smilie Replacen will nicht
PHP Newbe
- php
Hello,
ich hab mir eine Funktion erstellt, mit der ich die Smilies in meinem Text ersetzten möchte. Irgendwie wird aber der Text ":)" auch so ausgegeben und nicht das Bild dafür.
Funktion:
function smilie($text) {
$smilie = eregi_replace(":)","<img src="smilies/smile.gif" width="15" height="15" border="0" alt="">",$text);
:
: // Hier weitere Smilies
:
echo $smilie;
}
Und der Aufruf:
<?php
$text = ':) Dieses Smilie soll ersetzt werden...';
smilie($text);
?>
Könnt ihr mir sagen wo mein Fehler liegt?
Thanks
PHP Newbe
Hallo PHP Newbe,
$smilie = eregi_replace(":)","<img src="smilies/smile.gif" width="15" height="15" border="0" alt="">",$text);
Warum verwendest du eregi_replace? Ich kann keinen regulären Ausdruck oder die Notwendigkeit eines solchen erkennen.
Du möchtest einen einfachen String ersetzen, also verwendet doch str_replace() (http://php3.de/str-replace). Beachte, das alle Parameter Arrays sein können.
Grüße
David
Warum verwendest du eregi_replace? Ich kann keinen regulären Ausdruck oder die Notwendigkeit eines solchen erkennen.
Ja, und ergänzent dazu:
Wenn man um einen regulären Ausdruck herum kommt, dann sollte man das auch machen. Reguläre Ausdrücke haben den Nachteil, daß sie recht langsam sind. Bei dieser einen Abfrage würde man das zwar noch nicht bemerken, aber man sollte sich angewöhnen, die String-Funktionen zu nutzen, wenn das möglich ist.
Außerdem würde ich im Umgang mit regulären Ausdrücken dazu raten, die Perl-kompatiblen statt die POSIX-Funktionen zu nutzen, also die mit preg_ statt ereg_. Die sind schneller.
rob
Hallo David,
Du möchtest einen einfachen String ersetzen, also verwendet doch str_replace() (http://php3.de/str-replace). Beachte, das alle Parameter Arrays sein können.
Das habe ich gerade probiert. Das funktioniert aber auch nicht. Die Smilies werden einfach nicht ersetzt.
Thanks
PHP Newbe
Hallo PHP Newbe,
str_replace()
Das habe ich gerade probiert. Das funktioniert aber auch nicht. Die Smilies werden einfach nicht ersetzt.
Wie rufst du die Funktion denn auf? Gibt es Fehler?
Grüße
David
Hi David,
Wie rufst du die Funktion denn auf? Gibt es Fehler?
Fehler gibt es keine, aber mir ist gerade noch etwas aufgefallen:
Es wird immer nur das Smilie ersetzt, welches in der Funktion am Ende steht, die anderen werden ignoriert.
<?php
function smilie($arg) {
$smilie = str_replace(":confused:","<img src="/smilies/confused.gif" width="15" height="15" border="0" alt="">",$arg);
$smilie = str_replace(":-)","<img src="/smilies/smile.gif" width="15" height="15" border="0" alt="">",$arg);
$smilie = str_replace(":lol:","<img src="/smilies/lol.gif" width="15" height="15" border="0" alt="">",$arg);
echo $smilie;
}
$text = ':confused: :lol: :-)';
smilie($text);
?>
In diesem Beispiel wird bei mir nur das ":lol:" ersetzt, weil dieses in der Funktion smilie() als letztes steht.
Vielleicht weiß ja jemand, warum dies so ist?
Thanks
PHP Newbe
hi,
$smilie = str_replace(":confused:","<img src="/smilies/confused.gif" width="15" height="15" border="0" alt="">",$arg);
$smilie = str_replace(":-)","<img src="/smilies/smile.gif" width="15" height="15" border="0" alt="">",$arg);
$smilie = str_replace(":lol:","<img src="/smilies/lol.gif" width="15" height="15" border="0" alt="">",$arg);
echo $smilie;
In diesem Beispiel wird bei mir nur das ":lol:" ersetzt, weil dieses in der Funktion smilie() als letztes steht.
Vielleicht weiß ja jemand, warum dies so ist?
weil du $smilie immer wieder überschreibst, und dabei aber jedes mal wieder vom _original_-string $arg ausgehst.
ersetze den letzten parameter von str_replace in allen außer dem ersten durch $smilie.
gruß,
wahsaga
ja komisch, die syntax scheint zu stimmen: string eregi_replace ( string Suchmuster, string Ersatz, string Zeichenkette), siehe http://de2.php.net/eregi_replace