filter_var関数でURL形式をフィルタ
filter_var関数で値がURLの形式かどうかをチェックするには検証フィルタのFILTER_VALIDATE_URLが使える。
if(filter_var($str, FILTER_VALIDATE_URL)){
// $strはURL形式
}
else{
// $strはURL形式ではない
}
ただし、FILTER_VALIDATE_URLはfile://とかmaito:もURLの形式であるとみなす。
値が URL 形式である (» http://www.faqs.org/rfcs/rfc2396 に準拠している) かどうか、 オプションで、必須コンポーネントが含まれているかどうかを検証します。 妥当な URL が、HTTP プロトコル http:// を指定しているとは限りません。 つまり、その URL が期待通りのプロトコル (ssh:// や mailto: など) を使っているかどうか、さらなる検証が必要だということです。 この関数は、ASCII の URL のみを正しいとみなすことに注意しましょう。 国際化ドメイン名 (非 ASCII 文字を含むもの) は失敗します。
http、httpsのURLのみに限定する
http、httpsプロトコルのURLだけを判定したい場合は次のように正規表現と合わせて検証する。
if(filter_var($str, FILTER_VALIDATE_URL) && preg_match('|^https?://.*$|', $str)){
// $strはhttpかhttpsで始まるURL形式
}
else{
// $strはhttpかhttpsで始まるURL形式ではない
}