要件は
・「半角カナと半角英数と半角スペース以外の文字が入っている文字列」に対してバリデートをかけたい。
・内部コードにUTF-8を使っている。
で 先生に「php 半角カナ 正規表現」で尋ねると mb_eregを使えと言われました。
最初のコードは
mb_ereg(“/[^0-9a-zA-Z ア-ン゙゚ァ-ォャ-ョー。「」、]/”, $str);
でうまくいきませんでした。
原因は
・UTFで半角カナを指し示す場合は [。-゚] である。
・mb_eregではパターンの最初と最後に / を入れる必要がない。
・mb_internal_encodingで指定した内部コードは mb_ergeに影響しない。
の三つ
それを踏まえて書くと
mb_regex_encoding(‘utf-8’);
mb_ereg(“[^0-9a-zA-Z 。-゚]”, $str);
これでうまくいきました。
今回は2時間くらい無駄にした勉強しちゃった。