PHP 5.6.0beta1 released

mb_convert_kana

(PHP 4 >= 4.0.6, PHP 5)

mb_convert_kanaConvierte un "kana" a otro ("zen-kaku", "han-kaku" y más)

Descripción

string mb_convert_kana ( string $str [, string $option = "KV" [, string $encoding = mb_internal_encoding() ]] )

Realiza una conversión "han-kaku" - "zen-kaku" en el string str. Esta función solo es útil para el idioma japonés.

Parámetros

str

El string a convertir.

option

La opción de conversión.

Se especifica con una combinación de las siguientes opciones.

Opciones de conversión posibles
Opción Significado
r Convierte los alfabetos "zen-kaku" a "han-kaku"
R Convierte los alfabetos "han-kaku" a "zen-kaku"
n Convierte los números "zen-kaku" a "han-kaku"
N Convierte los números "han-kaku" a "zen-kaku"
a Convierte los alfabetos y los números "zen-kaku" a "han-kaku"
A Convierte los alfabetos y los números "han-kaku" a "zen-kaku" (Los caracteres incluídos en las opciones "a" y "A" están en el rango U+0021 - U+007E excepto U+0022, U+0027, U+005C, U+007E)
s Convierte del espacio de "zen-kaku" al de "han-kaku" (U+3000 -> U+0020)
S Convierte del espacio de "han-kaku" al de "zen-kaku" (U+0020 -> U+3000)
k Convierte "zen-kaku kata-kana" a "han-kaku kata-kana"
K Convierte "han-kaku kata-kana" a "zen-kaku kata-kana"
h Convierte "zen-kaku hira-gana" a "han-kaku kata-kana"
H Convierte "han-kaku kata-kana" a "zen-kaku hira-gana"
c Convierte "zen-kaku kata-kana" a "zen-kaku hira-gana"
C Convierte "zen-kaku hira-gana" a "zen-kaku kata-kana"
V Colapsa la notación de sonidos de voz, y la converte a caracteres. Usar con "K","H"

encoding

El parámetro encoding es la codificación de caracteres. Si es omitido, será usado el valor de la codificación de caracteres interna.

Valores devueltos

El string convertido.

Ejemplos

Ejemplo #1 Ejemplo de mb_convert_kana()

<?php
/* Convierte todos los "kana" a "zen-kaku" "kata-kana" */
$str mb_convert_kana($str"KVC");

/* Convierte "han-kaku" "kata-kana" a "zen-kaku" "kata-kana" 
   y los alfanuméricos de "zen-kaku" a "han-kaku" */
$str mb_convert_kana($str"KVa");
?>

add a note add a note

User Contributed Notes 4 notes

up
1
jdavide222 at hotmail dot com
1 year 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
1
d at safetypub dot org
9 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
10 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).
up
-1
sohel62 at yahoo dot com
6 years ago
I did that manually when I was not getting  expected result using mb_convert_kana().
<?php
 
/*
 * @author Taslim Mazumder Sohel
 * @deprecated 1.0 - 2008/02/19
 *
 */
function han_kaku_to_jen_kaku($str){
       
$replace_of = array('ヴ','ガ','ギ','グ',
                           
'ゲ','ゴ','ザ','ジ',
                           
'ズ','ゼ','ゾ','ダ',
                           
'ヂ','ヅ','デ','ド',
                           
'バ','ビ','ブ','ベ',
                           
'ボ','パ','ピ','プ','ペ','ポ');
       
$replace_by = array('ヴ','ガ','ギ','グ',
                           
'ゲ','ゴ','ザ','ジ',
                           
'ズ','ゼ','ゾ','ダ',
                           
'ヂ','ヅ','デ','ド',
                           
'バ','ビ','ブ','ベ',
                           
'ボ','パ','ピ','プ','ペ','ポ');
       
$_result = str_replace($replace_of, $replace_by, $str);
       
       
$replace_of = array('ア','イ','ウ','エ','オ',
                           
'カ','キ','ク','ケ','コ',
                           
'サ','シ','ス','セ','ソ',
                           
'タ','チ','ツ','テ','ト',
                           
'ナ','ニ','ヌ','ネ','ノ',
                           
'ハ','ヒ','フ','ヘ','ホ',
                           
'マ','ミ','ム','メ','モ',
                           
'ヤ','ユ','ヨ','ラ','リ',
                           
'ル','レ','ロ','ワ','ヲ',
                           
'ン','ァ','ィ','ゥ','ェ',
                           
'ォ','ヵ','ヶ','ャ','ュ',
                           
'ョ','ッ','、','。','ー',
                           
'「','」','゙','゚');
       
$replace_by = array('ア','イ','ウ','エ','オ',
                           
'カ','キ','ク','ケ','コ',
                           
'サ','シ','ス','セ','ソ',
                           
'タ','チ','ツ','テ','ト',
                           
'ナ','ニ','ヌ','ネ','ノ',
                           
'ハ','ヒ','フ','ヘ','ホ',
                           
'マ','ミ','ム','メ','モ',
                           
'ヤ','ユ','ヨ','ラ','リ',
                           
'ル','レ','ロ','ワ','ヲ',
                           
'ン','ァ','ィ','ゥ','ェ',
                           
'ォ','ヶ','ヶ','ャ','ュ',
                           
'ョ','ッ','、','。','ー',
                           
'「','」','”','');       
       
$_result = str_replace($replace_of, $replace_by, $_result);
        return
$_result;
    }
?>
To Top