今日は、Perlスクリプトをいじっている時
どうしても、ある一行のコードが通らないのでゴリ押しで作成したことを記事にします。
掲示板スクリプトをいじっていて、文字コードをShift-JISからUTF-8に置き換えたので、
その過程で、今回の問題が発生しました。
やりたかったのは、ひらがな入力を含まない投稿は、
正規表現を用いて不正とみなすことです。
早速コードを見たいと思います。
#1.Shift-JISで書かれていた元々のコード #※正規表現ではShift-JISのひらがな、カタカナ if ($FORM{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) { ★エラー処理 } #2.本来書きたかったコード if ($FORM{'comment'} !~ /[ぁ-んァ-ヶ]/) { ★エラー処理★ } #3.最終的に条件を満たして動いたコード(正規処理部分省略) if ($FORM{'comment'} !~ /ぁ|あ|ぃ|い|ぅ|う|ぇ|え|ぉ|お|/) { ★エラー処理★ }
まず 1 ではソースの文字コードをUTF-8に変更したので動作しませんでした(当たり前)
2 が実現したかった本来の実装です。本来は[ぁ-んァ-ヶ]で実装したかったのですが、
いかんせん漢字もスルーしてしまうので、全く機能しませんでした。
3 が最終的に実装したコードです。
ゴリ押しで一字ずつ「ぁ」から「ん」まで組み込みました。
カタカナも含めようか迷いましたがコードの長さからあえて、ひらがなのみ、としました。
なぜ 2 が通らないのか調べましたが、自分では解決できませんでした。
しかし 3 は上手く動作することが分かったので、最終的に 3 を選択しました。
ちゃんとした方法があるとは思うのですが、自分の力量ではこれが限界でした。
一応動いたのでこれで良しとしました。
もし、2 のコードの不備が分かる方がいたらお知らせ願えれば幸いです。
当方は力不足なので優しめに、ご教授いただければ幸いです(´・ω・`)