Hallo Juergen,
in meinem Dokumet steht
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Wenn du (sinnvollerweise) den HTML5-Doctypes <!doctype html>
benutzt, könntest du auch <meta charset="utf-8">
benutzen, das ist äquivalent und kürzer.
in meinem $string ='Österreich';
$array_1 = array('oe','ae','ue','oe','ae','ue','ss'); $array_2 = array('ö','ä','ü','Ö','Ä','Ü','ß');
for ($x = 0; $x < 7; $x++) { $string = str_replace($array_1[$x], $array_2[$x], $string); } $string =strtolower($string); $string=preg_replace ( '/[^a-zäÄöÖüÜß0-9_-]/i', '',$string);
strtolower()
funktioniert nur für ASCII-Zeichen. Unabhängig von deinem Kodierungsproblem empfiehlt sich die Verwendung von mb_strtolower()
, Beispiel:
echo mb_strtolower('ÖsteRReicH'); // österreich
echo strtolower('ÖsteRReicH'); // Österreich
�sterreich
Das deutet stark darauf hin, dass dein Script mit einer Kodierung gespeichert wurde, die nur ein Byte zur Kodierung benutzt (wie TS schon schrieb), wie beispielsweise ISO-8859-1 oder -15 abgespeichert wurde, weil dann Bytesequenzen auftauchen können (das Ö), die in UTF-8 keine Gültigkeit besitzen, daher das Ersetzungszeichen �. Anders herum würdest du Ö
erhalten (das Ö wird in UTF-8 mit zwei Bytes kodiert, die in einer Ein-Byte-Kodierung wie ISO-8859-1 anders interpretiert werden als in UTF-8).
Gruß
Julius