便利なFilter関数を使いこなそう その5
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
ヒューマンリソシア株式会社はコラム「便利なFilter関数を使いこなそう その5」を公開しました。
今回も検証フィルタの続きです。
今回は、ネットワークに関連するもののうち「URL」のフィルタを見ていきます。
function hoge($s) {
$options = array(
);
var_dump($s);
var_dump(filter_var($s, FILTER_VALIDATE_URL, $options));
echo "\n";
}
//
hoge('http://www.example.com');
hoge('http://www.example.com:8080');
hoge('http://user:pass@www.example.com');
hoge('//example.com'); // false
hoge('ftp://example.com');
hoge('https://example.com/dir/filename.php');
hoge('https://example.com/dir/filename.php?param1=test¶m2=test#anc');
URLは、シンプルなフォーマットから「そこそこややこしい」フォーマットまであります。
URLには「ユーザ名やパスワード」「ポート番号」「パラメタ」「アンカー」など
色々なものが埋め込めますが、それら全てを適切に把握してくれます。
HTMLを書く時に重宝する「プロトコルを省略する記法( ‘//example.com’ )はfalseになってしまいますが、
それ以外はすべて識別可能であることが分かります。
さてこのフィルタにも2つのオプションがあります。
function hoge($s) {
$options = array(
'flags' => FILTER_FLAG_PATH_REQUIRED
);
var_dump($s);
var_dump(filter_var($s, FILTER_VALIDATE_URL, $options));
echo "\n";
}
//
hoge('http://www.example.com'); // false
hoge('http://www.example.com/');
hoge('http://www.example.com:8080'); // false
hoge('http://user:pass@www.example.com'); // false
hoge('https://example.com/filename.php');
hoge('https://example.com/dir/filename.php');
hoge('https://example.com/dir/filename.php?param1=test¶m2=test#anc');
hoge('https://example.com/?param1=test¶m2=test#anc');
FILTER_FLAG_PATH_REQUIREDは「URLの中にパスがあること」を強要します。
なので、上3つは「パス部分がない」のでNGになります。
「’http://www.example.com/’」は、最後の / が「パス部分」になるので、falseにはりません。
似たようなフラグで「URLパラメタが必須」というものがあります。
この続きは以下をご覧ください
http://resocia.jp/column/5258/
ソーシャルもやってます!