要讓這個函式運作,您必須在此函式上方新增以下兩行。
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
執行半形-全形轉換。此函式僅適用於日文。
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");
?>
要讓這個函式運作,您必須在此函式上方新增以下兩行。
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) 在將查詢字串傳送到 PHP 頁面前,使用 JavaScript 轉換那些不支援的符號。
2) 使用 PHP 函式 str_replace 將那些不支援的符號取代。例如,$str = str_replace("'", "’", $str);
其中第一個單引號是半形,第二個是全形。