PHP Conference Nagoya 2025

mb_convert_kana

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

mb_convert_kanaConverte "kana" de um tipo para outro ("zen-kaku", "han-kaku" e mais)

Descrição

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

Realiza uma conversão "han-kaku" - "zen-kaku" para a string string. Esta função é útil apenas para o japonês.

Parâmetros

string

A string a ser convertida.

mode

A opção de conversão.

Especifique com uma combinação das seguintes opções.

Opções de Conversão Aplicáveis
Opção Significado
r Converte alfabetos "zen-kaku" para "han-kaku"
R Converte alfabetos "han-kaku" para "zen-kaku"
n Converte números "zen-kaku" para "han-kaku"
N Converte números "han-kaku" para "zen-kaku"
a Converte alfabetos e números "zen-kaku" para "han-kaku"
A Converte alfabetos e números "han-kaku" para "zen-kaku" (Caracteres incluídos nas opções "a", "A" são U+0021 - U+007E, excluindo U+0022, U+0027, U+005C, U+007E)
s Converte espaço "zen-kaku" para "han-kaku" (U+3000 -> U+0020)
S Converte espaço "han-kaku" para "zen-kaku" (U+0020 -> U+3000)
k Converte "zen-kaku kata-kana" para "han-kaku kata-kana"
K Converte "han-kaku kata-kana" para "zen-kaku kata-kana"
h Converte "zen-kaku hira-gana" para "han-kaku kata-kana"
H Converte "han-kaku kata-kana" para "zen-kaku hira-gana"
c Converte "zen-kaku kata-kana" para "zen-kaku hira-gana"
C Converte "zen-kaku hira-gana" para "zen-kaku kata-kana"
V Colapsa a notação de som sonoro e converte-os em um caractere. Use com "K","H"

encoding

O parâmetro encoding é a codificação de caracteres. Se for omitido ou null, o valor da codificação de caracteres interna será usado.

Valor Retornado

A string convertida.

Erros/Exceções

Gera um ValueError se a combinação de diferentes modes for inválida. Por exemplo, "sS".

Registro de Alterações

Versão Descrição
8.2.0 Um ValueError agora é gerado se a combinação de diferentes modes for inválida.
8.0.0 O parâmetro encoding agora pode ser nulo.

Exemplos

Exemplo #1 Exemplo de mb_convert_kana()

<?php
/* Converte todo "kana" para "zen-kaku" "kata-kana" */
$str = mb_convert_kana($str, "KVC");

/* Converte "han-kaku" "kata-kana" para "zen-kaku" "kata-kana"
e alfanuméricos "zen-kaku" para "han-kaku" */
$str = mb_convert_kana($str, "KVa");
?>

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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