molily: Multibyte String Functions

Beitrag lesen

Hallo,

wie kann man ein ganzes Array von Western nach UTF-8 umwandeln.

$search = mb_convert_encoding(array("ä", "Ä", "ü", "Ü", "ö", "Ö", "ß"), "utf-8");

mb_convert_encoding erwartet als ersten Parameter eine String-Variable. Die Notices kommen, weil PHP automatisch in den Array in einen String umwandelt. Dabei kommt »Array« heraus (siehe echo(array('a', 'b', 'c'));), was letztlich dazu führt, dass nichts ersetzt wird.

Du müsstest also jedes Array-Element einzeln in UTF-8 umwandeln, zum Beispiel so:

$search = array('ä', 'Ä', 'ü', 'Ü', 'ö', 'Ö', 'ß');
foreach ($search as &$character) {
 $character = utf8_encode($character);
}

Du kannst übrigens utf8_encode statt mb_convert_encoding nehmen. Die mbstring-Erweiterung von PHP ist nicht immer verfügbar.

$replace = mb_convert_encoding(array("ae", "ae", "ue", "ue", "oe", "oe", "ss"), "utf-8");

Da diese Zeichen aus ASCII stammen, brauchen sie nicht gesondert umkodiert werden, weil die Zeichenpositionen in UTF-8 und der ISO-Kodierung, die dein PHP-Script wahrscheinlich verwendet, identisch sind.

Alternativ kannst du dein Script auch direkt in UTF-8 schreiben.

Mathias