PHP Conference Nagoya 2025

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

Преобразовывает «han-kaku» — «zen-kaku» для строкового аргумента string. Эта функция может быть полезной только для японского языка.

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

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
/* Преобразование всех символов «kana» в «zen-kaku» «kata-kana» */

$str = mb_convert_kana($str, "KVC");

/* Преобразование «han-kaku» «kata-kana» в «zen-kaku» «kata-kana»
и «zen-kaku» буквенно-цифровых символов в «han-kaku» */
$str = mb_convert_kana($str, "KVa");
?>

Добавить

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

up
0
jdavide222 at hotmail dot com
11 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
19 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.

<?php
mb_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
21 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