to make this function work you have to add following two lines above this function.
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+0022, U+0027, U+005C, U+007Eを除く U+0021 - U+007E の範囲です)。 | 
| s | 「全角」スペースを「半角」に変換します(U+3000 -> U+0020)。 | 
| S | 「半角」スペースを「全角」に変換します(U+0020 -> U+3000)。 | 
| k | 「全角カタカナ」を「半角カタカナ」に変換します。 | 
| K | 「半角カタカナ」を「全角カタカナ」に変換します。 | 
| h | 「全角ひらがな」を「半角カタカナ」に変換します。 | 
| H | 「半角カタカナ」を「全角ひらがな」に変換します。 | 
| c | 「全角カタカナ」を「全角ひらがな」に変換します。 | 
| C | 「全角ひらがな」を「全角カタカナ」に変換します。 | 
| V | 濁点付きの文字を一文字に変換します。"K", "H" と共に使用します。 | 
encodingencoding
パラメータには文字エンコーディングを指定します。省略した場合、もしくは null の場合は、
内部文字エンコーディングを使用します。
変換後の文字列を返します。
   異なる mode の組み合わせが無効な場合 (例: "sS") は、
   ValueError がスローされます。
  
| バージョン | 説明 | 
|---|---|
| 8.2.0 | 異なる modeの組み合わせが無効な場合、
        ValueError がスローされるようになりました。 | 
| 8.0.0 | encodingは、nullable になりました。 | 
例1 mb_convert_kana() の例
<?php
/* Convert all "han-kaku" "kata-kana" to "zen-kaku" "hira-gana" */
echo mb_convert_kana('ヤマダ ハナコ', "HV") . "\n";
/* Convert "han-kaku" "kata-kana" to "zen-kaku" "kata-kana" 
   and "zen-kaku" alphanumeric to "han-kaku" */
echo mb_convert_kana('コウザバンゴウ 0123456', "KVa") . "\n";
?>上の例の出力は以下となります。
やまだ はなこ コウザバンゴウ 0123456
to make this function work you have to add following two lines above this function.
mb_language("Ja");
mb_internal_encoding("utf-8");
mb_convert_kana($_POST['something_value'], "rna");I didn't find Japanese sorting function. 
(mb_sort_kana or something)
Only SJIS encoding treats hankaku kata kana,
 I can't post here copy & paste version script.
I'm sorry...
You will replace comments with appropriate japanese string,
and write exception handlings between lines as you like.
<?php
mb_internal_encoding("SJIS");
$moji = /*"aiueo...wawon -?.," <- serialized hankaku kata kana 50 on hyou goes here*/;
$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(/*some japanese array here*/);
usort($arr, "cmp");
var_dump($arr);
?>It seems that mb_convert_kana() doesn't convert symbols such as ' (single quoatation). It affected my program when I insert data into database. 
So, I've found 2 ways to solve this.
1) Use Javascript to convert those non-supported symbols before sending query string to your php page.
2) Use php function, str_replace $str, to replace those non-supported symbols. For example, $str = str_replace("'", "?", $str);
where the first single quot is half-width(han kaku), and the second one is full-width(zen kaku).