- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpの正規表現について)
PHPの正規表現について
このQ&Aのポイント
- phpの正規表現を使用してメール・パスワードの入力を判定する方法について調べています。条件は半角英数と0-9の組み合わせで、使用禁止文字は\'@[]で、入力は8文字以内です。
- 正規表現についてよくわからない記号があるため、{ }は文字数の指定であり、{1,8}は1~8文字を意味します。\が入ってしまうと認証が通ってしまい、入力されたデータと異なるデータがMySQLに入ってしまいます。どうすれば\が入っても認証されないようにすることができるでしょうか。
- 参考にしたサイトはhttp://itbtech.itboost.co.jp/php/php_06.phpです。アドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>記号の意味でよくわからないのがあるのですが、 >{ }は文字数を指定するものでよろしいのでしょうか? >{1,8} は1~8文字までという意味? 正解です。 設定によりエスケープするサーバ、しないサーバがあるため、 \ の処理はいつも厄介ですが、 ひとつ、比較パターンの中に「0-9a-z」以外のハイフン「 - 」がありますが、 ereg系は(他も?) - は一番最後に指定しないと効きません。 "^[0-9a-z\!\"\#\$\%\&\(\)\=\-\~\|\{\}\;\:\+\*\,\.\/\<\>\?\_]{1,8}$" まず、コレの中の \ を全部取ってしまい、 - を一番最後に回しましょう。( " のエスケープは残して下さいね) そしたら \ が排除されると思います。 \ が排除されれば、MySQLの方で \ によるトラブルもなくなるのではないでしょうか?
お礼
適切な回答ありがとうござした。アドバイスどおり変更したら思い通りの結果を得ることができました。