[下ネタで覚えるPHP]投稿フォームに卑猥な漢字1文字を挿入れたらエラー表示したい

投稿フォームに卑猥な漢字だけ入れるのは勘弁してほしい時ってあるよね。
ifで弾けばいいんだけど、漢字1文字で「性」とか「膣」などといった表現だと際限ないよね。

そこで、PHPのmb_strlenとpreg_matchで漢字1文字だけならエラー文を出すようにするよ。

まずは文字数を数えるのにmb_strlenを使うよ。

$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
$text_count = mb_strlen($text);

でも、これだけだと漢字やひらがなだとうまく文字数を取得できないんだ。
だから、mb_detect_encodingをかましたあとに数えちゃう。

$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
$encode = mb_detect_encoding($text);
$text_count = mb_strlen($text, $encode);

次はpreg_matchで漢字かどうか判定するよ。

preg_match("/^[一-龠]+$/u", $text);

まとめると次のようになるよ。

$text = htmlspecialchars($_POST['text'], ENT_QUOTES);
$encode = mb_detect_encoding($text);
$text_count = mb_strlen($text, $encode);
if($text_count==1 && preg_match("/^[一-龠]+$/u", $text)){
     echo "漢字1文字しかいれてねーじゃねーか!";
}

文字判定は以下のページが参考になるよ。



パーフェクトPHP (PERFECT SERIES 3)

著者/訳者:小川 雄大 柄沢 聡太郎 橋口 誠

出版社:技術評論社( 2010-11-12 )

定価:¥ 3,780

Amazon価格:¥ 3,780

大型本 ( 592 ページ )

ISBN-10 : 4774144371

ISBN-13 : 9784774144375


スポンサード リンク

Comments

コメントはまだありません。

コメントする

(必須)

(必須)