strtr funktioniert nicht
Der_Php_Anfägner
- php
0 suit0 Der_Php_Anfägner1 suit
0 Blaubart1 dedlfix
Hallo zusammen
Ich habe das Problem, dass bei $addCatName_p3 die Funktion strtr nicht ausgeführt wird. Das Ergebnis von $addCatName_p3 sollte anschliessend so aussehen: Der_Test_mit_äü
$addCatName = $arrayCatDataForDatabase['addCatName']; //e.g. Der Test mit öäü
$addCatName_p1 = addslashes($addCatName);
$addCatName_p2 = str_replace(' ', '_', $addCatName_p1); //e.g. Der_Test_mit_äü
$trans = array("ä" => "ä", "ü" => "ü");
$addCatName_p3 = strtr($addCatName_p2, $trans); //e.g. Der_Test_mit_äü
Was auch merkwürdig ist, wenn ich strtr($addCatName_p2, $trans); ändere in strtr('Der_Test_mit_äü', $trans); dann bekomme ich das gewünschte Resultat (Der_Test_mit_äü).
Ich weiss nicht, ob es damit zusammenhängt, dass ich den String ($addCatName_p2) aus einem Array beziehe ($addCatName = $arrayCatDataForDatabase['addCatName'];).
Ich hoffe mir kann jemand helfen.
Ich hoffe mir kann jemand helfen.
Sieht alles soweit ok aus - anstatt strtr() würde ich aber htmlentities() verwenden oder noch besser gelich auf benannte Zeichenrefernezen verzichten, wenn es keinen _wirklich_ guten Grund dafür gibt.
Danke für die schnelle Antwort
oder noch besser gelich auf benannte Zeichenrefernezen verzichten, wenn es keinen _wirklich_ guten Grund dafür gibt.
Ich verstehen jedoch nur nicht, was du genau damit meinst?
oder noch besser gelich auf benannte Zeichenrefernezen verzichten, wenn es keinen _wirklich_ guten Grund dafür gibt.
Ich verstehen jedoch nur nicht, was du genau damit meinst?
Mit anderen Worten, du hast keinen _wirklich_ guten Grund, warum du deine Umlaute verstümmeln willst - dann lass es ganz einfach ;)
Irgendwie schon^^ ich möchte den String in eine MySQL-DB speichern und wenn ich die Umlaute ohne Konvertierung abspeichere, dann erhalte ich nur kryptische Zeichen von meiner Datenbank.
Desweiteren verwende ich die Zeichencodierung utf8_unicode_ci für die DB.
Hi!
Irgendwie schon^^ ich möchte den String in eine MySQL-DB speichern und wenn ich die Umlaute ohne Konvertierung abspeichere, dann erhalte ich nur kryptische Zeichen von meiner Datenbank.
Dann mach es richtig anstatt mit solchen Maßnahmen noch mehr Unheil anzustellen. Lies dich ein: SELFHTML-Wiki - Themen:Zeichencodierung
Desweiteren verwende ich die Zeichencodierung utf8_unicode_ci für die DB.
... besonders den Abschnitt zu MySQL.
Lo!
Tach.
Was auch merkwürdig ist, wenn ich strtr($addCatName_p2, $trans); ändere in strtr('Der_Test_mit_äü', $trans); dann bekomme ich das gewünschte Resultat (Der_Test_mit_äü).
Klingt nach einem Problem mit der Zeichencodierung. Wenn Du beispielsweise Deinen PHP-Quelltext in UTF-8 codiert, Deine Testdaten aber ISO 8859-1 nutzen, werden die Umlaute aus Deinem Sucharray natürlich nicht gefunden. Sie werden unter ISO 8859-1 ja anders codiert als mit UTF-8.
Hi!
Abgesehen davon, dass du versuchst, einen Fehler mit noch mehr Unfug auszubügeln ...
$addCatName_p1 = addslashes($addCatName);
Was macht das addslashes() an dieser Stelle?
$addCatName_p2 = str_replace(' ', '_', $addCatName_p1); //e.g. Der_Test_mit_äü
$trans = array("ä" => "ä", "ü" => "ü");
$addCatName_p3 = strtr($addCatName_p2, $trans); //e.g. Der_Test_mit_äü[/code]
Mach eine Kontrollausgabe, bei der du siehst, wie die Zeichen kodiert sind. Missbrauchen kann man dazu urlencode()
echo urlencode("ä-ü") . '<br>';
echo urlencode($addCatName_p2);
Fällt dir was auf, besonders bei den Umlauten?
Was auch merkwürdig ist, wenn ich strtr($addCatName_p2, $trans); ändere in strtr('Der_Test_mit_äü', $trans); dann bekomme ich das gewünschte Resultat (Der_Test_mit_äü).
Das heißt also, dass deine äü nicht übereinstimmen, die im Code eine andere Kodierung haben, als die, die in der Variable stehen.
Ich hoffe mir kann jemand helfen.
Lo!