Signatur
Beschreibung
mb_convert_kana ist eine spezialisierte Funktion zur Umwandlung japanischer Zeichensätze. Sie erlaubt die Konvertierung zwischen Halbbreiten-Katakana (いわゆる Hankaku) und Vollbreiten-Katakana (Zenkaku), zwischen Katakana und Hiragana sowie zwischen halbbreiten und vollbreiten ASCII-Zeichen. Dies ist in der japanischen Webentwicklung häufig notwendig, etwa zur Normalisierung von Benutzereingaben in Formularen.
Der Parameter mode steuert die Art der Konvertierung über eine Kombination von Buchstaben-Flags. Die wichtigsten sind: r (Halbbreiten-ASCII → Vollbreiten), R (Vollbreiten-ASCII → Halbbreiten), n (Halbbreiten-Ziffern → Vollbreiten), N (Vollbreiten-Ziffern → Halbbreiten), a (Halbbreiten-ASCII → Vollbreiten), A (Vollbreiten-ASCII → Halbbreiten), s (Halbbreiten-Leerzeichen → Vollbreiten), S (Vollbreiten-Leerzeichen → Halbbreiten), k (Halbbreiten-Katakana → Vollbreiten), K (Vollbreiten-Katakana → Halbbreiten), h (Halbbreiten-Katakana → Hiragana), H (Hiragana → Halbbreiten-Katakana), c (Vollbreiten-Katakana → Hiragana), C (Hiragana → Vollbreiten-Katakana), V (zusammengesetzte Dakuten/Handakuten in Halbbreite normalisieren).
Die Funktion benötigt eine Multibyte-fähige Zeichenkodierung. Wird encoding nicht angegeben, wird die interne Kodierung aus mb_internal_encoding() verwendet. Empfohlen wird UTF-8. Die Funktion ist Teil der mbstring-Erweiterung, die für japanische Textverarbeitung unerlässlich ist.
Ein typischer Anwendungsfall ist die Normalisierung von Suchbegriffen oder Formulareingaben, bei denen Benutzer Kana in unterschiedlichen Formen eingeben können. Durch Konvertierung in eine einheitliche Form lassen sich Texte besser vergleichen und verarbeiten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Die zu konvertierende Zeichenkette. Muss in der angegebenen (oder internen) Kodierung vorliegen. | |
| $mode | string | KV | Eine Kombination von Buchstaben-Flags, die die gewünschten Konvertierungen steuern. Groß- und Kleinbuchstaben haben entgegengesetzte Wirkung (z. B. k = Halbbreite→Vollbreite, K = Vollbreite→Halbbreite). Mehrere Flags können kombiniert werden, z. B. 'KVC'. |
| $encoding | string|null | null | Die Zeichenkodierung der Eingabe und Ausgabe, z. B. 'UTF-8'. Wird null übergeben, verwendet die Funktion die interne Kodierung aus mb_internal_encoding(). |
Rückgabewert
false, ab PHP 8.0 wird ein ValueError bei ungültigem encoding geworfen.Beispiele
Halbbreiten-Katakana in Vollbreiten-Katakana umwandeln
<?php
mb_internal_encoding('UTF-8');
// Halbbreiten-Katakana (Hankaku) → Vollbreiten-Katakana (Zenkaku)
$hankaku = "アイウエオ"; // Halbbreite: アイウエオ
$zenkaku = mb_convert_kana($hankaku, 'K', 'UTF-8');
echo $zenkaku; // Ausgabe: アイウエオ (Vollbreite)
Formulareingabe normalisieren: Vollbreiten-Katakana → Hiragana
<?php
mb_internal_encoding('UTF-8');
// Benutzer hat Vollbreiten-Katakana eingegeben, aber Hiragana wird für die Suche benötigt
$input = "カタカナ";
$normalized = mb_convert_kana($input, 'c', 'UTF-8'); // Vollbreite-Katakana → Hiragana
echo $normalized; // かたかな
// Kombiniertes Beispiel: Halbbreiten-Katakana + Halbbreiten-ASCII → normalisiert
$mixed = "アイウ abc123";
$result = mb_convert_kana($mixed, 'KVa', 'UTF-8'); // K=Kat. normalisieren, V=Dakuten, a=ASCII→Vollbreite
echo $result;
Vollbreiten-ASCII-Zeichen in halbbreite ASCII-Zeichen zurückkonvertieren
<?php
mb_internal_encoding('UTF-8');
// Vollbreiten-ASCII (wie oft in japanischen Texten) → Standard-ASCII
$fullwidth = "Hello World!";
$ascii = mb_convert_kana($fullwidth, 'AS', 'UTF-8'); // A=Vollbreiten-ASCII→Halbbreite, S=Leerzeichen
echo $ascii; // Hello World!
// Wichtig · Fallstricke
Kodierungs-Hinweis: Die Funktion arbeitet nur korrekt mit Multibyte-Kodierungen, die japanische Zeichen unterstützen (z. B. UTF-8, EUC-JP, SJIS). Bei falscher Kodierungsangabe können Zeichen korrumpiert werden.
Flag-Kombinationen: Einige Flag-Kombinationen können zu widersprüchlichen Anweisungen führen (z. B. gleichzeitig k und K). Die Funktion verarbeitet die Flags in einer definierten Reihenfolge, aber solche Kombinationen sollten vermieden werden.
Dakuten/Handakuten (Flag V): Halbbreites Katakana verwendet separate Zeichen für Dakuten (゛) und Handakuten (゜). Das Flag V kombiniert diese mit dem vorherigen Zeichen zu einem einzigen Vollbreiten-Zeichen (z. B. ガ → ガ). Dies ist beim Konvertieren von Hankaku-Katakana fast immer erforderlich.
Die Funktion ist Teil der mbstring-Erweiterung und nur verfügbar, wenn diese kompiliert oder als Shared-Extension geladen wurde. Prüfung mit extension_loaded('mbstring').