PHP アドバンス

PHP フィルタ応用

1. 指定範囲内での整数バリデーション

以下の例では、filter_var() 関数を使用して、変数が「整数(INT)型」であり、かつ「1から200の間」にあるかどうかをチェックします。

1.1 実装例

<?php
$int = 122;
$min = 1;
$max = 200;

// オプション配列を使用して範囲を指定
if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
  echo("変数の値は許可された範囲内にありません");
} else {
  echo("変数の値は許可された範囲内です");
}
?>

2. IPv6 アドレスのバリデーション

以下の例では、filter_var() 関数を使用して、変数 $ip が有効な IPv6 アドレスであるかどうかをチェックします。

2.1 実装例

<?php
$ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

// FILTER_FLAG_IPV6 フラグを使用して検証
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
  echo("$ip は有効な IPv6 アドレスです");
} else {
  echo("$ip は有効な IPv6 アドレスではありません");
}
?>

3. クエリ文字列を必須とするURLのバリデーション

以下の例では、filter_var() 関数を使用して、変数 $url が「クエリ文字列(QueryString)」を含む有効な URL であるかどうかをチェックします。

3.1 実装例

<?php
$url = "https://www.volardev.com";

// FILTER_FLAG_QUERY_REQUIRED フラグを使用してクエリ文字列の存在を必須にする
if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
  echo("$url はクエリ文字列を含む有効な URL です");
} else {
  echo("$url はクエリ文字列を含む有効な URL ではありません");
}
?>

4. ASCII値が127を超える文字の削除

以下の例では、filter_var() 関数を使用して文字列をサニタイズします。文字列からすべての HTML タグを削除すると同時に、ASCII 値が 127 を超えるすべての文字(特殊文字など)を削除します。

4.1 実装例

<?php
$str = "<h1>Hello WorldÆØÅ!</h1>";

// HTMLタグの除去と、高位ASCII文字のストリップを実行
$newstr = filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $newstr;
?>