PHP: filter_var関数で値がURL形式かチェック


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の形式であるとみなす。

PHPマニュアル;検証フィルタ

値が 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形式ではない
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です