str_replace ä ö ü - komme mir vor wie ein Anfänger

daniel_sun

Erfahrenes Mitglied
Hallo,

wie schon gesagt komme ich mir gerade wie ein Anfänger vor :)

Will eig nur mit einem gewöhnlichen str_replace Umlaute ersetzen.

PHP:
$str = $_POST['name'];
$search = array ("ä", "ö", "ü", "ß");
$replace = array ("ae", "oe", "ue", "ss");
$str = str_replace($search,$replace,$str);

Mit % / und alles anderen Zeichen funktioniert es super nur nicht mit diesen Umlauten. Bei Firefox kommt immer eine Raute mit einem Fragezeichen drin. Lasse ich mir die Post-Variable anzeigen steht der Text mit korrekten umlauten drin!

Hab auch schon htmlentities() und html_entity_decode() versucht weil ich dachte das das Formular die Werte schon falsch übergibt. Das scheint aber nicht der Fall zu sein :-(

Bin mit meinem Latein am Ende.

Gruß
Daniel_sun
 
Gib dir mal die Post-Variable mit var_dump() ausgeben und betrachte das Resultat nachher in der Source-Ansicht des Browsers "View Page Source". Dann siehst du was wirklich drin steht ohne das es durch den Browser geparst wird.
 
Hat sich erledigt. Hab das Array noch um 3 zeichen erweitert, die ich filtern will und nun klappen auch die umlaute!
Keine Ahnung warum aber danke für die Hilfe :)
 
Bei Firefox kommt immer eine Raute mit einem Fragezeichen drin.

Das liegt vermutlich an einer oder mehreren der folgenden Ursachen:

- PHP-Script-Datei liegt im Format UTF-8 (manche Editoren geben es auch als UNICODE an) vor: Öffne das Script in Notepad++ und schau in die untere Leiste, wenn da steht ANSI, dann ist es kein UTF-8
- Abhängig vom Format des Scripts müsstest du den entsprechenden Header senden:

PHP:
header('Content-Type: text/html; charset=utf-8'); // Im Falle von ANSI müsstest du evtl. hier charset=iso-8859-1 notieren

- Wenn du auf die Datenbank zugreifst und dort Werte ausliest und UTF-8 als Datei-Format vorliegt, müsstest du die Datenbank-Verbindung noch als UTF-8 markieren:

Code:
SET NAMES 'utf8';
 
Zurück