Start · Sprachen · PHP · Referenz · mb_convert_kana

mb_convert_kana

Funktion

Konvertiert japanische Kana-Zeichen (Hiragana, Katakana, Halbbreite/Vollbreite) sowie ASCII-Zeichen zwischen verschiedenen Formen.

seit PHP 4.0.6 Kategorie: string

Signatur

mb_convert_kana(string $string, string $mode = 'KV', string|null $encoding = null): string

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

Typ
string
Beschreibung
Die konvertierte Zeichenkette in der angegebenen (oder internen) Kodierung. Die Funktion gibt immer einen String zurück; bei Fehler in älteren PHP-Versionen 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;
かたかな アイウエオ abc123

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!
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').