Umlaute ersetzten

Lektor21

Erfahrenes Mitglied
Hallo!

Wie kann man eine Variable z.B. $agb_new auf Sonderzeichen durchsuchen und diese ersetzten?

Und danach schreibe ich diese in eine Datenbank!

Bisher habe ich das hier, das funktioniert aber nicht :confused:

PHP:
$umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
$replace = Array("ä","ö","ü","Ä","Ö","Ü","ß");
$agb_new = eregi_replace($umlaute, $replace, $agb_new);

mysql_query(" UPDATE data SET agb = '$agb_new' ") OR die(mysql_error());

Also er schreibt immernoch das Ä usw. total cryptisch in die DB!
 
Wie wäre es denn damit?
PHP:
$trans = get_html_translation_table(HTML_ENTITIES);
$str = "Hallo & <Frau> & Krämer";
$encoded = strtr($str, $trans);

// $encoded => Hallo &amp; &lt;Frau&gt; &amp; Kr&auml;mer
(Beispiel geklaut von php.net get_html_translation_table())
 
Hmmm ich komme nicht klar,

ich mache alles richtig, habe es jetzt so:

PHP:
$agb_new = htmlentities($agb_new);
mysql_query(" UPDATE data SET agb = '$agb_new' ") OR die(mysql_error());

Doch nun schreibt er mir z.B. bei ä folgendes in die DB: &Atilde;&curren; :confused:

Und so gehts auch nicht:

PHP:
$agb_new = htmlentities($agb_new, ENT_QUOTES, 'ISO-8859-15');
 
Zuletzt bearbeitet:
Sind die Eingabedaten zufällig UTF-8-kodiert? Denn dann ist es gar nicht notwendig, andere Zeichen außer den Metazeichen zu maskieren. Und dafür reicht auch die htmlspecialchars()-Funktion.
 
Also die $Variable kommt frisch aus einem Textarea und damit uncodiert!

Ich verstehe das irgendwie nicht :confused:

Also mir htmlspecialchars() zeigt er wieder das gleiche an als wenn ich es direkt reinschreibe!
 
Zuletzt bearbeitet:
Gibt es etwas, was ich direkt mit in folgendes einbauen kann;

PHP:
mysql_query(" UPDATE data SET agb = '$agb_new' ") OR die(mysql_error());

Habe mal irgendwo sowas gelesen, dass es in SQL was gibt, dass Umlaute etc. umwandelt!? :confused:

Sagt mal muss ich vielleicht in meiner DB beim Feld irgendwas ändern?

Feld Typ Kollation Attribute Null Standard Extra Aktion
agb text latin1_german1_ci Nein
 
Zuletzt bearbeitet:
Habe mal irgendwo sowas gelesen, dass es in SQL was gibt, dass Umlaute etc. umwandelt!?
Wozu willst du das denn überhaupt? Da du vermutlich UTF-8 für Ein- und Ausgabedaten verwendest, kannst du sie direkt ausgeben und musst sie nicht durch Zeichenreferenzen ersetzten. Das erspart dir nicht nur Rechenleistung (Klartextzeichen durch passende Zeichenreferenzen ersetzen) sondern auch Speicherplatz („ä“ als Klartextzeichen in UTF-8 = 2 Byte gegenüber „&auml;“ = 6 Byte).
 
Ich habe aber das Problem, dass wenn ich einen anderen Explorer benutze kommt es manchmal vor, dass die ÄÜÖ usw. gar nicht mehr lesbar sind! Die sehen dann so aus:

Älso = Älso
 
Zuletzt bearbeitet:
Zurück