*Richard*: ereg_replace

Hallo,

ich habe mir ein kleines Gästebuch geschrieben.
Freunde, Verwandte und etc. können mir eine Nachricht schreiben.
Die Nachrichten kommen bei mir an (Email).
Ich lese die Nachrichten.
Ich habe auf meine Homepage einen geschützen Bereich (.htaccess) erstellt, wo ich eine "Textarea" und ein submit button habe.
In der Email ist der gesamte Code enthalten inkl. Nachricht, die mir die Verbindung zu meiner Datenbank erstellt und die Nachricht in die Datenbank einfügt.

Wenn jemand eine Nachricht so schreibt: Da ist'n Fehler bekomme ich einen Fehler, wenn ich es versuche in die Datenbank einzufügen. Ist auch klar: wegen '

Wie kann ich aber die Funktion ereg_replace so schreiben, damit in der Datenbank genau der HTML Code: ’ steht. Ich meine damit, dass in der Datenbank anstelle von ' der Code ’ steht.

Meine "Versuche" haben leider nicht viel gebracht:

Wenn ich es so schreibe:

$text="Da ist'n Fehler";  
$neu=ereg_replace("'","’",$text);

Wird in der Email nichts geändert. ' wird angezeigt. Aber wenn ich es so schreibe:

$text="Da ist'n Fehler";  
$neu=ereg_replace("'","’",text);

wird zwar in der Email anstelle von ' der Code ’ angezeigt, aber wenn ich nun diese Nachricht, in die erwähnte Textarea einfüge und auf den Submit klicke, kommt der Fehler, wegen '.

Achso, ′ hilft auch nicht.

Wie kann ich diesen Fehler beheben?

Vielen Dank und ein schönen sonnigen Sonntag noch
Richard

  1. echo $begrüßung;

    Wenn jemand eine Nachricht so schreibt: Da ist'n Fehler bekomme ich einen Fehler, wenn ich es versuche in die Datenbank einzufügen. Ist auch klar: wegen '

    Die Lösung heißt: kontextgerechtes Behandeln der Werte. Alles andere ist nicht der richtige Weg. HTML-Entitys und andere Ersatzdarstellungen haben als Problemlösungsversuch in einer Datenbank nichts zu suchen. Das ersetzt nur das eine Problem durch ein anderes, weil nun keine Stringfunktionen des DBMS mehr ordentlich angewendet werden können.

    Wenn du einen Wert in einen String-Kontext eines SQL-Statements bringst, gibt es Regeln, wie bestimmte Zeichen zu notieren sind. Das ist je nach DBMS unterschiedlich. Meist gibt es aber eine Funktion, die sich um die korrekte Behandlung kümmert. Unter MySQL ist das beispielsweise mysql_real_escape_string():

    $sql = sprintf("INSERT INTO tabelle (feld1, feld2) VALUES ('%s', '%s')",  
      mysql_real_escape_string($feld_wert_1),  
      mysql_real_escape_string($feld_wert_2));  
      
    if (!($result = mysql_query($sql)))  
      // Fehlerbehandlung
    

    echo "$verabschiedung $name";