看板 PHP 關於我們 聯絡資訊
※ 引述《tas72732002 (蔥頭)》之銘言: : 請問一下, : 全形小寫英文可以轉成大寫嗎?? : 我使用strtoupper並不會幫我轉成大寫 : 不知道是否有其他的function可以用?? : 目前想到的方法是替換 : public function transChar($char){ : $find = array( : "a", "b", "c", "d", "e", "f", "g", "h", "i", "j","k", "l", : "m", "n", "o", "p", "q", "r", "s", "t","u", "v", "w", "x", "y", "z"); : $relpace = array( : "A", "B", "C", "D", "E", "F", "G", "H", "I", "J","K", "L", : "M", "N", "O", "P", "Q", "R", "S", "T","U", "V", "W", "X", "Y", "Z"); : return str_replace($find,$relpace,$char); : } 你的問題讓我想到之前處理五十音平假名和片假名的轉換,雖然那時候是用JS解決。 全形/半形轉函式大概會像下面這樣: function shiftSpaceTable($char=null, $width='auto') { //手刻對應表 $charTable = array( //以"全形字元" => "半形字元"來建表 //由於會太長,所這邊先略過,請自行手刻全部:) "a" => "a", "0" => "0", ); //判斷當前字元為半形或全形 $charWidth = array_key_exists($char,$charTable) ? 'full' : 'half'; //如果字元字形與指定字形一樣,就直接回傳 if($charWidth == $width) { return $char; } //如果是要轉半形,反轉對應表 if($charWidth == 'half') { $charTable = array_flip($charTable); } return $charTable[$char]; } 接著你就可以這樣子解決了! $halfstr = 'I am halfwidth words'; $fullstr = null; for($i=0; $i<mb_strlen($halfstr,'UTF-8'); $i++) { $char = mb_substr($halfstr,$i,1,'UTF-8'); //先轉成半形 $lowerchar = shiftSpaceTable($char, 'half'); //轉大寫 $supperchar = strtoupper($lowerchar); //再轉全形 $fullstr .= shiftSpaceTable($supperchar, 'full'); } echo $fullstr;//輸出 I AM HALFWIDTH WORDS 另外一種方法是用程式來計算字碼的差值,進行相對的轉換。 如果有興趣的話,可以參考 http://goo.gl/fY724 -- 歡迎來我的網誌看看 @ http://liaosankai.pixnet.net/blog -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.196.199.5
s25g5d4:像這種陣列對應的方式 有個網站的簡繁轉換也是這樣刻的 06/24 16:05
s25g5d4:不過他是用 JS 去弄 不支援詞彙對應 06/24 16:05