English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 基礎チュートリアル

PHP 高級チュートリアル

PHP & MySQL

PHP 参考マニュアル

PHP フィルタ

このチュートリアルでは、PHPでのユーザー入力のクリーンアップと验证方法を学びます。

フィルタの验证とクリーンアップを使用

ユーザー入力のクリーンアップと验证

データを验证するためにフィルタ拡張を使用するには、PHPのfilter_var()機能を使用する必要があります。この関数の基本的な文法は以下のように示されます:

filter_var(variable, filter, options)

この関数には3つのパラメータがあり、最後の2つはオプションです。第1つのパラメータはフィルタリングする値、第2つのパラメータは適用するフィルタのID、第3つのパラメータはフィルタに関連するオプションの配列です。その動作を見てみましょう。

文字列のクリーンアップ

以下の例では、文字列からすべてのHTMLタグを削除して文字列をクリーンアップします:

<?php
//ユーザーコメントの例
$comment = "<h1>こんにちは!今日はどうですか?</h1>";
 
//コメント文字列をクリーンアップして表示
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
テストを見てみましょう‹/›

上記の例の出力は以下の通りです:

こんにちは!今日はどうですか?

整値の確認

以下の例では、この値が有効な整数かどうかを確認します。

<?php
// サンプルの整数値
$int = 20;
 
// 整値の確認
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b> は有効な整数です";
} else{
    echo "<b>$int</b> は有効な整数ではありません";
}
?>
テストを見てみましょう‹/›

上記の例では、変数\$intを0に設定すると、サンプルコードは無効な整数メッセージを表示します。この問題を解決するには、以下のように値0を明示的にテストする必要があります:

<?php
//サンプルの整数値
\$int = 0;
 
// サンプル整数値の確認
if(filter_var(\$int, FILTER_VALIDATE_INT) === 0 || filter_var(\$int, FILTER_VALIDATE_INT)){
    echo "The <b>\$int</b> は有効な整数です";
} else{
    echo "The <b>\$int</b> は有効な整数ではありません";
}
?>
テストを見てみましょう‹/›

IPアドレスの確認

以下の例では、値が有効なIPアドレスであるかどうかを確認します。

<?php
// IPアドレス
\$ip = "172.16.254.1";
 
// IPアドレスの確認例
if(filter_var(\$ip, FILTER_VALIDATE_IP)){
    echo "<b>\$ip</b> は有効なIPアドレスです";
} else {
    echo "<b>\$ip</b> は有効なIPアドレスではありません";
}
?>
テストを見てみましょう‹/›

FILTER_FLAG_IPVを使用してそれぞれ別々に使用できます4またはFILTER_FLAG_IPV6をさらにマークする4またはIPV6 IPアドレスの確認は以下の例で示されています。これは一例です:

<?php
// IPアドレス
\$ip = "172.16.254.1";
 
// IPアドレスの確認例
if(filter_var(\$ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    echo "<b>\$ip</b> は有効なIPV6アドレス";
} else {
    echo "<b>\$ip</b> は有効なIPV6アドレス";
}
?>
テストを見てみましょう‹/›

メールアドレスのクリーンアップと確認

以下の例では、メールアドレスのクリーンアップと確認方法を説明します。

<?php
// メールアドレス
\$email = "someone@@example.com";
 
//メールからすべての無効な文字を削除
\$sanitizedEmail = filter_var(\$email, FILTER_SANITIZE_EMAIL);
 
//メールアドレスの確認
if(\$email == \$sanitizedEmail && filter_var(\$email, FILTER_VALIDATE_EMAIL)){
    echo "\$email は有効なメールアドレスです";
} else{
    echo "\$email は有効なメールアドレスではありません";
}
?>
テストを見てみましょう‹/›

注:FILTER_SANITIZE_EMAILフィルタは、除くアルファベット、数字および提供されたメールアドレス文字列からすべての無効な文字を削除します!#$%&'*+-=?^_`{|}~@.[]。

URLのクリーンアップと確認

以下の例では、URLをクリーンアップし、確認する方法を示します。

<?php
//  url 例
$url = "http:://www.example.com";
 
//URLからすべての無効な文字を削除
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// ウェブサイトURLを確認
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url は有効なウェブサイトURLです";
} else{
    echo "$url は有効なウェブサイトURLではありません";
}
?>
テストを見てみましょう‹/›

注意:FILTER_SANITIZE_URLフィルタは、除くアルファベット、数字、および提供されたURL文字列中のすべての無効な文字を削除します$-_。+!*「(),{}|\\^~[]`<>#%";/?:@&=。

以下の例では、URLがクエリ文字列を含むかどうかをチェックするflagを使用する方法を示しますFILTER_FLAG_QUERY_REQUIRED

<?php
//url
$url = "http://www.example.com?topic=filters";
 
//クエリ文字列を取得するためのウェブサイトURLを確認
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> クエリ文字列を含む";
} else{
    echo "<b>$url</b> クエリ文字列を含まない";
}
?>
テストを見てみましょう‹/›

参照してくださいHTML URLの方法を学ぶためのURLの異なる部分を確認します。

範囲内の整数を確認

以下の例では、提供された値が整数であるかどうか、およびそれが0から100の範囲内です。

<?php
// サンプルの整数値
$int = 75;
 
//サンプルの整数値を確認
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> 0から100の範囲内";
} else{
    echo "<b>$int</b> 0から100の範囲内";
}
?>
テストを見てみましょう‹/›