現在、体系的に学ぶ安全なwebアプリケーションの作り方(いわゆる徳丸本です)を用いて学習中です。
入力処理に関して思うように動作しない点があったため質問させていただきます。
環境
macOS Big Sur 11.3
mamp 6.2
PHP 7.4.9
解決したいこと
入力されたパラメータに対して、制御文字のチェックを正常に行いたいです。
問題点
入力されたパラメータに対して[:cntrl:]を用いて制御文字をチェックして、if文で分岐処理をしたいのですが、明らかに制御文字が入っていない文字列に対してもエラー文が出てしまいます。
php
1$str = 'あいうえお'; 2if (preg_match('/\A[[:^cntrl:]]{1, 20}\z/u',$str) !== 1) { 3 echo '20文字以内でタイトルを入力してください。'; 4} 5 6>>> 20文字以内でタイトルを入力してください。(エラー文)
調べたこと
php
1preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $str)
のように制御文字自体を削除する方法は見つかったのですが、ただ単にチェックする方法は見つかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/03 17:52