使用 mb_convert_kana() 函数并指定 kv 或 kvhr 等规则参数,即可将日文全角字符转换为半角。该函数通过正则匹配自动处理假名、数字和字母的转换,无需手动编写替换逻辑。

mb_convert_kana() 支持哪些转换规则?
该函数通过第二个参数 $option 控制转换行为,常用规则包括 K(全角转半角)、V(半角转全角)以及组合规则如 KV(双向转换)。对于日文场景,推荐使用 KVhr 实现平假名与片假名的互换,同时保持其他字符不变。

<?php $input = "こんにちは123ABC"; // 全角转半角:K + V(假名+数字+字母) $half = mb_convert_kana($input, 'KV'); echo $half; // こんいちは123ABC // 平假名转片假名:Hr $katakana = mb_convert_kana($input, 'Hr'); echo $katakana; // コンニチワ123ABC // 片假名转平假名:Ha $hiragana = mb_convert_kana($katakana, 'Ha'); echo $hiragana; // こんにちは123ABC
如何处理特殊符号和标点的全半角转换?
默认情况下,mb_convert_kana() 不处理标点符号和空格。若需完整转换,可结合 iconv 或使用自定义映射表。但多数业务场景中,仅转换假名和 alphanumeric 字符已足够。
立即学习“PHP免费学习笔记(深入)”;

<?php
// 示例:包含标点的输入
$input_with_punct = "こんにちは、世界!";
// 仅转换假名为片假名,标点保留原样
$result = mb_convert_kana($input_with_punct, 'Hr');
echo $result; // コンニチワ、世界!
// 若需将全角标点转为半角,需额外处理
$punct_map = [
',' => ',',
'!' => '!',
'。' => '.',
];
foreach ($punct_map as $full => $half) {
$result = str_replace($full, $half, $result);
}
echo $result; // コンニチワ,世界!
当输入包含混合编码时如何确保正确转换?
在 UTF-8 环境下,mb_convert_kana() 能正确处理多字节字符。但若源数据为 Shift-JIS 或其他编码,需先使用 mb_convert_encoding() 统一转为 UTF-8,再执行转换,避免乱码或截断问题。



















