前提
- PHP 7.1
- cakePHP3
- 文字コード:UTF8
実現したいこと
入力文字にSJISの有効範囲外の文字が使用されていないかをチェックしようとしています。
システム自体はUTF8なのですが、入力値をSJISのCSVに出力するため入力時にバリデーションをかけようとしていますが上手く検知できません。
発生している問題・エラーメッセージ
入力値を正規表現を使ってバリデーションしたいと考えております。
mb_ereg を使えばチェック可能かと思っていたのですが上手く判定してくれません。
該当のソースコード
// sjis範囲外文字 $check = '﨑' $pattern = "[^" . "(\x{0a})|" . "(\x{20}-\x{7E})|" . "(\x{8140}-\x{819E})|" . "(\x{819F}-\x{81AC})|" . "(\x{81B8}-\x{81BF})|" . "(\x{81C8}-\x{81CE})|" . "(\x{81DA}-\x{81E8})|" . "(\x{81F0}-\x{81F7})|" . "(\x{81FC})|" . "(\x{839F}-\x{83B6})|" . "(\x{83BF}-\x{83D6})|" . "(\x{8440}-\x{8460})|" . "(\x{8470}-\x{8491})|" . "(\x{849F}-\x{84BE})|" . "(\x{824F}-\x{8258})|" . "(\x{8260}-\x{8279})|" . "(\x{8281}-\x{829A})|" . "(\x{829F}-\x{82F1})|" . "(\x{8340}-\x{8396})|" . "(\x{889F}-\x{989E})|" . "(\x{989F}-\x{9FFC})|" . "(\x{E040}-\x{EAA4})" . "]" ; $enc_str = mb_convert_encoding($check, 'sjis-win'); mb_regex_encoding('sjis-win'); if (mb_ereg($pattern, $enc_str)) { // ここに入って欲しいが入ってくれない }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/29 08:28