mb_convert_kana

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_convert_kanaПреобразовывает одну кодировку "kana" в другую: "zen-kaku", "han-kaku" и другие

Описание

mb_convert_kana(string $string, string $mode = "KV", ?string $encoding = null): string

Функция преобразовывает кодировку значения с типом string, которое принимает параметр string, из "han-kaku" в "zen-kaku". Функция полезна только для японского языка.

Список параметров

string

Исходная строка (string).

mode

Параметры преобразования.

Режим устанавливается комбинацией следующих параметров.

Возможные параметры преобразования
Настройка Описание
r Преобразование "zen-kaku" букв в "han-kaku"
R Преобразование "han-kaku" букв в "zen-kaku"
n Преобразование "zen-kaku" чисел в "han-kaku"
N Преобразование "han-kaku" чисел в "zen-kaku"
a Преобразование "zen-kaku" букв и чисел в "han-kaku"
A Преобразование "han-kaku" букв и чисел в "zen-kaku" (Для настроек "a", "A" символы берутся из диапазона U+0021 — U+007E, исключая U+0022, U+0027, U+005C, U+007E)
s Преобразование "zen-kaku" пробела в "han-kaku" (U+3000 → U+0020)
S Преобразование "han-kaku" пробела в "zen-kaku" (U+0020 → U+3000)
k Преобразование "zen-kaku kata-kana" в "han-kaku kata-kana"
K Преобразование "han-kaku kata-kana" в "zen-kaku kata-kana"
h Преобразование "zen-kaku hira-gana" в "han-kaku kata-kana"
H Преобразование "han-kaku kata-kana" в "zen-kaku hira-gana"
c Преобразование "zen-kaku kata-kana" в "zen-kaku hira-gana"
C Преобразование "zen-kaku hira-gana" в "zen-kaku kata-kana"
V Свёртывает фонемы и преобразовывает их в символ. Указывается вместе с "K", "H"

encoding

Параметр encoding указывает кодировку символов. При пропуске параметра или передаче значения null функция интерпретирует символы в предустановленной кодировке модуля.

Возвращаемые значения

Функция возвращает преобразованную строку (string).

Ошибки

Функция выбрасывает ошибку ValueError, если в параметр mode передали недопустимую комбинацию режимов наподобие "sS".

Список изменений

Версия Описание
8.2.0 Функция теперь выбрасывает ошибку ValueError при недопустимой комбинации режимов в параметре mode.
8.0.0 Параметр encoding теперь принимает значение null.

Примеры

Пример #1 Пример преобразования кодировки функцией mb_convert_kana()

<?php

/* Преобразование символов "han-kaku" "kata-kana" в "zen-kaku" "hira-gana" */
echo mb_convert_kana('ヤマダ ハナコ', "HV") . "\n";

/* Преобразование "han-kaku" "kata-kana" в "zen-kaku" "kata-kana"
и "zen-kaku" буквенно-цифровых символов в "han-kaku" */
echo mb_convert_kana('コウザバンゴウ 0123456', "KVa") . "\n";

?>

Результат выполнения приведённого примера:

やまだ はなこ
コウザバンゴウ 0123456
Добавить

Примечания пользователей 3 notes

up
0
jdavide222 at hotmail dot com
12 years ago
to make this function work you have to add following two lines above this function.mb_language("Ja");mb_internal_encoding("utf-8");mb_convert_kana($_POST['something_value'], "rna");
up
0
d at safetypub dot org
20 years ago
I didn't find Japanese sorting function. (mb_sort_kana or something)Only SJIS encoding treats hankaku kata kana, I can't post here copy & paste version script.I'm sorry...You will replace comments with appropriate japanese string,and write exception handlings between lines as you like.<?phpmb_internal_encoding("SJIS");$moji = /*"aiueo...wawon -?.," <- serialized hankaku kata kana 50 on hyou goes here*/;$moji .= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxwz0123456789";for($i = 0; isset($moji[$i]); $i++){    $pittan[$moji[$i]] = $i;}function cmp($a, $b){   if ($a == $b) {       return 0;   }   return iter(mb_convert_kana($a, "askh") ,mb_convert_kana($b, "askh"), 0);}function iter($a, $b, $i){    global $pittan;    if(!isset($a[$i]) || !isset($b[$i])){        return (isset($b[$i]))? -1 : 1;    }    if ($pittan[$a[$i]] == $pittan[$b[$i]]){        return iter($a, $b, ++$i);    }    return (($pittan[$a[$i]]) < ($pittan[$b[$i]]))? -1 : 1;}echo "<pre>";$arr = array(/*some japanese array here*/);usort($arr, "cmp");var_dump($arr);?>
up
-1
dn at littlealf dot net
22 years ago
It seems that mb_convert_kana() doesn't convert symbols such as ' (single quoatation). It affected my program when I insert data into database. So, I've found 2 ways to solve this.1) Use Javascript to convert those non-supported symbols before sending query string to your php page.2) Use php function, str_replace $str, to replace those non-supported symbols. For example, $str = str_replace("'", "?", $str);where the first single quot is half-width(han kaku), and the second one is full-width(zen kaku).
To Top