要使此函数正常工作,您必须在此函数上方添加以下两行。
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 — 将“片假名”相互转换(“全角”,“半角”等)
对 字符串 string
执行“半角” - “全角”转换。此函数仅对日语有用。
字符串
要转换的 字符串。
模式
转换选项。
使用以下选项的组合指定。
选项 | 含义 |
---|---|
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
参数是字符编码。如果省略或为 null
,则将使用内部字符编码值。
转换后的 字符串。
如果不同 mode
的组合无效,则抛出 ValueError。例如 "sS"
。
版本 | 描述 |
---|---|
8.2.0 | 如果不同 mode 的组合无效,现在会抛出 ValueError。 |
8.0.0 |
encoding 现在可以为 null。 |
示例 #1 mb_convert_kana() 示例
<?php
/* 将所有“片假名”转换为“全角””片假名“*/
$str = mb_convert_kana($str, "KVC");
/* 将“半角””片假名“转换为“全角””片假名“
并将“全角”字母数字转换为“半角”*/
$str = mb_convert_kana($str, "KVa");
?>
要使此函数正常工作,您必须在此函数上方添加以下两行。
mb_language("Ja");
mb_internal_encoding("utf-8");
mb_convert_kana($_POST['something_value'], "rna");
我没有找到日语排序函数。
(mb_sort_kana 或其他)
只有 SJIS 编码处理半角片假名,
我不能在这里发布复制粘贴版本的脚本。
对不起...
您将用适当的日语字符串替换注释,
并在行之间编写异常处理,如您所愿。
<?php
mb_internal_encoding("SJIS");
$moji = /*"aiueo...wawon -?.," <- 序列化半角片假名五十音表内容*/;
$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);
?>
似乎mb_convert_kana()无法转换像'(单引号)这样的符号。当我将数据插入数据库时,它影响了我的程序。
因此,我找到了两种解决方法。
1) 使用Javascript在将查询字符串发送到php页面之前转换那些不受支持的符号。
2) 使用php函数str_replace $str替换那些不受支持的符号。例如,$str = str_replace("'", "?", $str);
其中第一个单引号是半角,第二个是全角。