• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Der elegante Weg mit "strtr" will nicht funktionieren - Wo liegt der Fehler ?

StephanBo

Mitglied
Hatte von der Funktion strtr gehört, die anstatt str_replace angewendet werden soll, wenn mehrere Zeichen in einem Array zu ändern sind. In meinem konkreten Fall sieht das nun so aus:

...
$head = $row['head'];
$replace = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '-');
$head_nospace = strtr( $head, $replace );
...

Zwar werden Leerzeichen wie gewünscht durch ein " - " ersetzt, doch bei den Umlauten tut sich nichts. Ich habe die zu ersetzenden Umlaute auch test halber bereits in html konformer Schreibweise ( &auml ) gesetzt, was aber auch nichts gebracht hat.

Wo kann hier der Fehler liegen ?

Danke schon mal...
 
Der Fehler könnte sein, dass Du den Zeichensatz nicht beachtest. Wenn die Datei in der o.g. Code steht im Zeichensatz ANSI gespeichert wurde, könntest Du keine utf-8 Zeichen ersetzen. Kontrolliere also, dass Du überall den selben Zeichensatz verwendest.

Und verwende bitte Code-Tags wenn Du Quellcode im Forum zeigst.
 
Ich hatte das schon vermutet, hätte aber nicht gedacht, dass es so sensitiv reagiert, wie ich nun herausfinden musste.

Einträge in meiner DB sind im "utf8_swedish_ci" Format angegeben. Bei den Meta-Angaben meiner einzelnen Seiten war das charset jedoch "nur" mit "utf-8" deklariert. Das führte bisher zu keinen Problemen und hat sich erst jetzt bemerkbar gemacht, wo ich die o.g. Funktion benutzen wollte. Ändert man nun die Meta-Angaben auf den einzelnen Seiten von "utf-8" in die exaktere Meta-Angabe "utf8_swedish_ci" funktioniert es auch mit dem "strtr"-Befehl.

Danke, hast mich auf die richtige Fährte gebracht.

PS:

Ich verwende in Zukunft auch für kleinere Quellcodes den Code-Tag.
Übrigens funktioniert das Forum hier immer noch nicht hundertprozentig im IE10 (Zeilenumbrüche gehen bspw. nicht). Nur als Hinweis, falls noch nicht bemerkt.
 
Zurück
Oben