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");
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_convert_kana — Преобразовывает одну кодировку «kana» в другую («zen-kaku», «han-kaku» и другие)
Преобразовывает «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");
?>
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");
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);
?>
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).