Smilies ersetzen mit Problemen

Nitromaus

Erfahrenes Mitglied
Ich hab ein Script für eine Shotbox geschrieben, jetzt bin ich dabei, das smilies ersetzt werden sollen, bis auf das, dass es Probleme mit ein paar Sonderzeichen gibt. Smilies wie :-D , :-( können ersetzt werden, dagegen :-) , \ (Backslash), :] können nicht ersetzt werden, obwohl ich in diesem Script mit Add- und Stripslashes arbeite. Die Daten werden aus einer MySQL Tabelle gelsesen. Hier mal die Funktion:

PHP:
function replaceSmilies($string){
$result=dosql("SELECT * FROM smilies ");
$anz=mysql_num_rows($result);
$string2=$string;
    for($i=0;$i<2;$i++){
    $row=mysql_fetch_object($result, MYSQL_ASSOC);
     $string2=str_replace(AddSlashes($row->textsmilie),"<img src='".AddSlashes($row->smiliesrc)."' border='0' alt='".AddSlashes($row->expression)."'>", $string2);
       
       }
     
     
     return $string2;
}

Wenn das Erbebniss geechot wird, dann wird das ganze mit StripSlashes ausgebeben. Aber irgendwo muss ich doch was vergessen haben, oder? Bitte helft mir.
 
vielleicht so?

PHP:
function replaceSmilies($string){
$result=dosql("SELECT * FROM smilies ");
$anz=mysql_num_rows($result);
$string2=$string;
    for($i=0;$i<2;$i++){
    $row=mysql_fetch_object($result, MYSQL_ASSOC);
$textsmilie = $row->textsmilie;
$smiliesrc = $row->smiliesrc;
$expression = $row->expression;
$textsmilie = addslashes($textsmilie);
$smiliesrc = addslashes($smiliesrc);
$expression = addslashes($expression);

$string2= str_replace($textsmilie,"<img src='".$smiliesrc)."' border='0' alt='".$expression."'>", $string2);
       
       }
     
     
     return $string2;
}
 
thanks, es klappt so halb, also wenn ich z.B. ein ' replacen will, muss ich ein Escape Zeichen davor machen \' , vielleicht liegt es ja wie ich es in die DB schreibe daran. Es werden direkt die Variablen aus dem Formular in die DB geschrieben, also ohne Escape Zeichen.
Ich hab dann auch versucht keine Escape-Zeichen in der Variable $smiliesrc zu haben, dann kommt aber bei andren Sonderzeichen wie z.B. einer ( ein massiver Fehler. Bitte helft mir, sowas haben doch bestimmt schon viele gemacht.
 
hey leute, ihr kennt euch doch aus. Ihr seid doch Profis, also bitte helft mir, wo muss ich genau escapen (input und in db schreiben, beim smilie replacen, beim outputen). Bidde.:(
 
Zurück