この文書の現在のバージョンと選択したバージョンの差分を表示します。
— |
機種依存文字のチェック [2013/12/03 11:33] (現在) luis_lee 作成 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== 機種依存文字のチェック ====== | ||
+ | |||
+ | 方法として2種類ある | ||
+ | |||
+ | **チェックしたコードを記入しチェックする ** | ||
+ | function checkItemMojiDependent($str) | ||
+ | { | ||
+ | mb_regex_encoding('UTF-8'); | ||
+ | | ||
+ | $pdc = '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼∮∟⊿纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇゙Q燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰・蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"'; | ||
+ | $pdc_array = Array(); | ||
+ | $pdc_text = str_replace(array("\r\n","\n","\r"), '', $str); | ||
+ | | ||
+ | while($iLen = mb_strlen($pdc, 'UTF-8')) { | ||
+ | array_push($pdc_array, mb_substr($pdc, 0, 1, 'UTF-8')); | ||
+ | $pdc = mb_substr($pdc, 1, $iLen, 'UTF-8'); | ||
+ | } | ||
+ | | ||
+ | foreach($pdc_array as $value) { | ||
+ | if(preg_match("/(" . $value . ")/", $pdc_text)) { | ||
+ | return true; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | ===== こちらはとても使えるソースだ。===== | ||
+ | |||
+ | **SJIS区分表を参考し、チェックする ** | ||
+ | function checkItemMojiDependent($str) | ||
+ | { | ||
+ | // 文字列をシフトJISに変換 | ||
+ | $sjisStr = mb_convert_encoding($str, 'sjis-win', 'UTF-8'); | ||
+ | // 一文字ずつチェック | ||
+ | for($i = 0; $i < mb_strlen($sjisStr, 'sjis-win'); $i++){ | ||
+ | // 指定位置の文字を取り出す | ||
+ | $ch = mb_substr($sjisStr, $i, 1, 'sjis-win'); | ||
+ | | ||
+ | // 取得文字を16進数に変換 | ||
+ | $hex = intval(bin2hex($ch), 16); | ||
+ | | ||
+ | // 取得文字が機種依存文字か判定 | ||
+ | if($hex > 0x8540 && $hex < 0x889E){ | ||
+ | // 機種依存文字ですよ | ||
+ | // return mb_substr($str, $i, 1); | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | return true; | ||
+ | } | ||
+ | |||
+ | JIS X 0208 の文字コード表 | ||
+ | http://ash.jp/code/codetbl2.htm | ||
+ | |||
+ | **SJISコード区分対応表 ** | ||
+ | array(0x8540,0x857E),array(0x8580,0x859E), // 9区 | ||
+ | array(0x859F,0x85FC), // 10区 | ||
+ | array(0x8640,0x867E),array(0x8680,0x869E), // 11区 | ||
+ | array(0x869F,0x86FC), // 12区 | ||
+ | array(0x8740,0x877E),array(0x8780,0x879E), // 13区-NEC特殊記号- | ||
+ | array(0x879F,0x87FC), // 14区 | ||
+ | array(0x8840,0x887E),array(0x8880,0x889E), // 15区 | ||
+ | array(0xEB40,0xEB7E),array(0xEB80,0xEB9E), // 85区 | ||
+ | array(0xEB9F,0xEBFC), // 86区 | ||
+ | array(0xEC40,0xEC7E),array(0xEC80,0xEC9E), // 87区 | ||
+ | array(0xEC9F,0xECFC), // 88区 | ||
+ | array(0xED40,0xED7E),array(0xED80,0xED9E), // 89区-NEC拡張外字 | ||
+ | array(0xED9F,0xEDFC), // 90区-NEC拡張外字 | ||
+ | array(0xEE40,0xEE7E),array(0xEE80,0xEE9E), // 91区-NEC拡張外字 | ||
+ | array(0xEE9F,0xEEFC), // 92区-NEC拡張外字 | ||
+ | array(0xEF40,0xEF7E),array(0xEF80,0xEF9E), // 93区-NEC拡張外字 | ||
+ | array(0xEF9F,0xEFFC), // 94区-NEC拡張外字 | ||
+ | array(0xF040,0xF07E),array(0xF080,0xF09E), // 95区-ユーザ領域 | ||
+ | array(0xF09F,0xF0FC), // 96区-ユーザ領域 | ||
+ | array(0xF140,0xF17E),array(0xF180,0xF19E), // 97区-ユーザ領域 | ||
+ | array(0xF19F,0xF1FC), // 98区-ユーザ領域 | ||
+ | array(0xF240,0xF27E),array(0xF280,0xF29E), // 99区-ユーザ領域 | ||
+ | array(0xF29F,0xF2FC), // 100区-ユーザ領域 | ||
+ | array(0xF340,0xF37E),array(0xF380,0xF39E), // 101区-ユーザ領域 | ||
+ | array(0xF39F,0xF3FC), // 102区-ユーザ領域 | ||
+ | array(0xF440,0xF47E),array(0xF480,0xF49E), // 103区-ユーザ領域 | ||
+ | array(0xF49F,0xF4FC), // 104区-ユーザ領域 | ||
+ | array(0xF540,0xF57E),array(0xF580,0xF59E), // 105区-ユーザ領域 | ||
+ | array(0xF59F,0xF5FC), // 106区-ユーザ領域 | ||
+ | array(0xF640,0xF67E),array(0xF680,0xF69E), // 107区-ユーザ領域 | ||
+ | array(0xF69F,0xF6FC), // 108区-ユーザ領域 | ||
+ | array(0xF740,0xF77E),array(0xF780,0xF79E), // 109区-ユーザ領域 | ||
+ | array(0xF79F,0xF7FC), // 110区-ユーザ領域 | ||
+ | array(0xF840,0xF87E),array(0xF880,0xF89E), // 111区-ユーザ領域 | ||
+ | array(0xF89F,0xF8FC), // 112区-ユーザ領域 | ||
+ | array(0xF940,0xF97E),array(0xF980,0xF99E), // 113区-ユーザ領域 | ||
+ | array(0xF99F,0xF9FC), // 114区-ユーザ領域 | ||
+ | array(0xFA40,0xFA7E),array(0xFA80,0xFA9E), // 115区-IBM拡張漢字 | ||
+ | array(0xFA9F,0xFAFC), // 116区-IBM拡張漢字 | ||
+ | array(0xFB40,0xFB7E),array(0xFB80,0xFB9E), // 117区-IBM拡張漢字 | ||
+ | array(0xFB9F,0xFBFC), // 118区-IBM拡張漢字 | ||
+ | array(0xFC40,0xFC7E),array(0xFC80,0xFC9E), // 119区-IBM拡張漢字 | ||
+ | array(0xFC9F,0xFCFC), // 120区 | ||