PHPのバリデーションチェックで「半角記号の入力を禁止」する方法を教えて下さい。

PHP44閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

シングルバイトの記号は全部で32あると思います(ASCIIコード順に書くと !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ です)。 正規表現でチェックしてもいいですし、ユーザ定義関数を作ってもいいです。 function mark_exists($arg) { if (!defined('NGCHAR')) define('NGCHAR', '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'); for ($i=0; $i<strlen(NGCHAR); $i++) if (strpos($arg, NGCHAR[$i]) !== false) return true; return false; }

ThanksImg質問者からのお礼コメント

リスト化して1文字ずつチェックですね! 分かりやすかったです!ありがとうございました!

お礼日時:9/16 18:44

その他の回答(1件)

0

> のような半角記号が1文字以上含む場合はエラーにしたい 「のような」という曖昧な表現では不可能で、プログラムでやる以上は厳密な表現が必要です。 ・全ての半角記号 ・指定したリストに含まれる文字 など... 一般に複数の文字の有無を検出したい場合、正規表現が使われることが多いです。 その上で、検出したい文字を全て並べる(範囲指定も可)するか、Unicodeのプロパティで表現するかでしょう。 https://www.php.net/manual/ja/regexp.reference.escape.php https://www.php.net/manual/ja/regexp.reference.unicode.php > PHPのバリデーションチェックで「半角記号の入力を禁止」する shimixさん が逆質問している様に、半角記号がNGならマルチバイト(≒全角文字)の記号もNGな場合が殆どなはずだから 、状況を想像できない... まぁ、それなりの理由があるのだろうけれど...