Antman: Multibyte String Functions

Beitrag lesen

Hallo Molili,

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.

Jo, habe ich auch schon rausgefunden.

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);
}

Super, danke. Aber warum verwendest du das & vor $character ?

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

Werde ich mal versuchen.

$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.

Stimmt natürlich. Habe ich in der Verwirrung total vergessen.

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

Jaaaaaaaaa!! Oh mann, ich hatte gehofft du würdest das sagen. Bei mir ist eh alles in unicode in der DB und in den Schablonen. Sag mir wie? Ich benutze Dreamweaver. Wie kann ich php code als unicode speichern? Ist mir schleierhaft. Dann bräuchte man die ganzen multibyte Funktionen ja garnicht, oder ?