php mb_preg で ハマった

要件は
・「半角カナと半角英数と半角スペース以外の文字が入っている文字列」に対してバリデートをかけたい。
・内部コードに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時間くらい無駄にした勉強しちゃった。

←よかったらクリックお願いします。

kataware の紹介

二児の父、職業SE、やりたいことはゲームと歌とアプリ作ったりサーバいじったり娘の服を作ったり色々あり過ぎて時間が足りなさ過ぎて病みそうだから娘に癒してもらってる。
カテゴリー: php, SE備忘録   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です