mb_convert_kana
(PHP 4 >= 4.0.6, PHP 5)
mb_convert_kana — Преобразование кодировок "kana" из одной в другую ("zen-kaku", "han-kaku" и другие)
Описание
$str
[, string $option
= "KV"
[, string $encoding
]] )
Поизводит преобразование "han-kaku" - "zen-kaku" для агрумента string str
.
Эта функция может быть полезной только для японского языка.
Список параметров
-
str
-
Исходная строка string.
-
option
-
Настройка конвертации.
Задается комбинацией следующих настроек.
Возможные настройки преобразования Настройка Описание 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
представляет собой символьную кодировку. Если он опущен, вместо него будет использовано значение внутренней кодировки.
Возвращаемые значения
Преобразованная строка string.
Примеры
Пример #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" alpha-numeric в "han-kaku" */
$str = mb_convert_kana($str, "KVa");
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Поддержка языков и кодировок
- Многобайтные строки
- mb_check_encoding
- mb_convert_case
- mb_convert_encoding
- mb_convert_kana
- mb_convert_variables
- mb_decode_mimeheader
- mb_decode_numericentity
- mb_detect_encoding
- mb_detect_order
- mb_encode_mimeheader
- mb_encode_numericentity
- mb_encoding_aliases
- mb_ereg_match
- mb_ereg_replace_callback
- mb_ereg_replace
- mb_ereg_search_getpos
- mb_ereg_search_getregs
- mb_ereg_search_init
- mb_ereg_search_pos
- mb_ereg_search_regs
- mb_ereg_search_setpos
- mb_ereg_search
- mb_ereg
- mb_eregi_replace
- mb_eregi
- mb_get_info
- mb_http_input
- mb_http_output
- mb_internal_encoding
- mb_language
- mb_list_encodings
- mb_output_handler
- mb_parse_str
- mb_preferred_mime_name
- mb_regex_encoding
- mb_regex_set_options
- mb_send_mail
- mb_split
- mb_strcut
- mb_strimwidth
- mb_stripos
- mb_stristr
- mb_strlen
- mb_strpos
- mb_strrchr
- mb_strrichr
- mb_strripos
- mb_strrpos
- mb_strstr
- mb_strtolower
- mb_strtoupper
- mb_strwidth
- mb_substitute_character
- mb_substr_count
- mb_substr
Коментарии
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).
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);
?>
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");