はじめに
実務にて、フォームデータの文字数を制限するバリデーション(入力値の検証)を実装する作業があり、それを解決した情報になります。Web 開発の初心者、初学者の方にもわかりやすいように、ソースコードを編集してサンプルを公開しています、ご参考になれば幸いです。
検証環境
サンプル
解説
サンプルのソースコードを基に、フォームデータの文字数を制限する方法を説明します。
入力フォーム
フォーム側で maxlength 属性による文字数の制限はしません。
理由は、ユーザーがメモ帳に入力内容を書いてからコピー&ペーストした場合、この属性によって最大長を超えた文字列が自動的にカットされることに気付きにくいからです。結果、送信側と受信側で話が噛み合わなかったり、ユーザー登録情報だった場合はログインができないなどのトラブルにつながる可能性があります。
また、Microsoft サポートより Internet Explorer 11 で contenteditable 属性や maxlength 属性を設定した要素で日本語入力ができないことがある という報告があったので気を付けましょう。
郵便番号のような短い数字を入力する項目では、ユーザーに気付かせてあげるという意味で使えるかもしれません。
文字数制限処理
mb_strlen でフォームデータの文字数を取得して、指定した数値と比較するだけです。
if (!checkCharCount($inquiry, 200)) $msg = 'お問い合わせ内容は200文字以内です。';
function checkCharCount(string $str, int $count): bool {
return mb_strlen($str) <= $count;
}
文字列の長さを取得する strlen と間違えないように注意しましょう。
以上です。
おわりに
サンプルのソースコードを再利用する際は、要件定義やコーディング規約にお気を付けください。