【PHP第6回】バリデーション

【PHP第6回】バリデーション

PHPのプログラミングメモ第6回です。

【関連記事】
>> 【PHP第1回】プログラミングメモ/プログラミングメモのコツ/環境構築
>> 【PHP第2回】変数・定数・データ型
>> 【PHP第3回】条件分岐・ループ処理
>> 【PHP第4回】関数
>> 【PHP第5回】配列
>> 【PHP第6回】バリデーション


PHPでは、フォームの入力値を検証するためのバリデーション関数やライブラリがいくつか用意されています。いくつか調べたので備忘録です。

filter_var関数 filter_var関数

  • 様々な種類のデータに対してバリデーションを行うことができる
  • 例えば、メールアドレスやURLの形式が正しいかどうかを検証することが可能
// sample code
$email = 'example@example.com';
if ( filter_var($email, FILTER_VALIDATE_EMAIL) ) {
    echo "valid mail address";
} else {
    echo "invalid mail address";
}

preg_match関数

  • 正規表現を使用して文字列がパターンに一致するかどうかをチェックすることができる
  • 正規表現を使うことで、様々な形式の入力値に対して柔軟なバリデーションを行うことができる

// sample code
$password = 'Abc12345';
if (preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/', $password)) {
    echo "valid password";
} else {
    echo "invalid password";
}

PHP標準のバリデーション関数

  • PHPでは、数値や日付、文字列などのデータ型ごとにバリデーション関数が用意されている
  • 例えば、is_numeric関数は、引数が数値かどうかをチェックする
  • 他にも、is_string関数やis_date関数などがある
$age = '20';
if (is_numeric($age)) {
    echo "valid age";
} else {
    echo "invalid age";
}

ハンズオン

// 郵便番号を正規表現でバリデーションする場合の例
// $zip_code_pattern = "/^\d{3}-\d{4}$/";
// この正規表現パターンは、以下のように解釈される
// ^: 文字列の先頭を表す
// \d{3}: 3桁の数字
// -: ハイフン
// \d{4}: 4桁の数字
// $: 文字列の末尾を表す

// 上記の正規表現パターンは、以下のような文字列にマッチします。
// 123-4567
// 987-6543

// 以下は、PHPで郵便番号のバリデーションを行う例
// preg_match関数を使用

$zip_code = '123-4567';
$zip_code_pattern = "/^\d{3}-\d{4}$/";

if (preg_match($zip_code_pattern, $zip_code)) {
    echo "valid zip code";
} else {
    echo "invalid zip code";
}