mb_convert_kana

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

mb_convert_kana将“假名”从一种转换为另一种(“全角”,“半角”等等)

说明

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

string string 执行“半角” - “全角”转换。此函数仅适用于日语。

参数

string

要转换的 string

mode

转换选项。

使用以下选项的组合指定。

适用的转换选项
Option 意思
r 将“全角”字母转换为“半角”
R 将“半角”字母转换为“全角”
n 将“全角”数字转换为“半角”
N 将“半角”数字转换为“全角”
a 将“全角”字母和数字转换为“半角”
A 将“半角”字母和数字转换为“全角”(“a”,“A”选项中包含的字符是 U+0021 - U+007E,不包括 U+0022,U+0027,U+005C,U+007E)
s 将“全角”空格转换为“半角”(U+3000 -> U+0020)
S 将“半角”空格转换为“全角”(U+0020 -> U+3000)
k 将“全角片假名”转换为“半角片假名”
K 将“半角片假名”转换为“全角片假名”
h 将“全角平假名”转换为“半角片假名”
H 将“半角片假名”转换为“全角平假名”
c 将“全角片假名”转换为“全角平假名”
C 将“全角平假名”转换为“全角片假名”
V 折叠浊音符号并将其转换为一个字符。与“K”,“H”一起使用

encoding

encoding 参数是字符编码。如果省略或为 null,则使用内部字符编码值。

返回值

转换后的 string

错误/异常

如果不同 mode 的组合无效,则抛出 ValueError。例如 "sS"

变更日志

版本 说明
8.2.0 如果不同 mode 的组合无效,现在将抛出 ValueError
8.0.0 encoding 现在可以为空。

范例

示例 #1 mb_convert_kana() 示例

<?php
/* 将所有“假名”转换为“全角””片假名“ */
$str = mb_convert_kana($str, "KVC");

/* 将“半角””片假名“ 转换为“全角””片假名“
和“全角”字母数字转换为“半角” */
$str = mb_convert_kana($str, "KVa");
?>

添加备注

用户贡献备注 4 备注

jdavide222 at hotmail dot com
11 年前
要使此函数正常工作,您必须在该函数上方添加以下两行。

mb_language("Ja");
mb_internal_encoding("utf-8");

mb_convert_kana($_POST['something_value'], "rna");
d at safetypub dot org
19 年前
我没有找到日语排序函数。
(mb_sort_kana 或其他)
只有 SJIS 编码处理半角片假名,
我不能在这里发布复制粘贴版本的脚本。
抱歉...
您将用合适的日语字符串替换注释,
并根据需要在行之间编写异常处理。

<?php
mb_internal_encoding
("SJIS");

$moji = /*"aiueo...wawon -?.," <- 序列化半角片假名 50 在表中此处*/;
$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(/*一些日语数组在这里*/);
usort($arr, "cmp");
var_dump($arr);
?>
dn at littlealf dot net
21 年前
似乎 mb_convert_kana() 不会转换符号,例如 '(单引号)。当我将数据插入数据库时,它影响了我的程序。

因此,我找到了两种解决方法。
1) 在将查询字符串发送到您的 php 页面之前,使用 Javascript 转换那些不支持的符号。
2) 使用 php 函数 str_replace $str 替换那些不支持的符号。例如,$str = str_replace("'", "?", $str);
其中第一个单引号是半角(汉字),第二个是全角(全角)。
sohel62 at yahoo dot com
16 年前
当我使用 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