2024 年日本 PHP 研討會

mb_convert_kana

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

mb_convert_kana轉換「假名」格式(「全形」、「半形」等等)

說明

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

對字串 string 執行半形-全形轉換。此函式僅適用於日文。

參數

string

要轉換的 字串

mode

轉換選項。

使用以下選項的組合來指定。

適用的轉換選項
選項 意義
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,則會使用內部字元編碼值。

返回值

已轉換的 字串

錯誤/例外

如果不同 mode 的組合無效,例如 "sS",則會拋出 ValueError

更新日誌

版本 說明
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");
?>

新增註解

使用者貢獻的註解 3 則註解

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 -?.," (半形片假名)*/;
$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_replace("'", "’", $str);
其中第一個單引號是半形,第二個是全形。
To Top