正規表現で済ませてもいいのだけれども、
http以外にもshttpやhttps、ftpなどその他派生まで考慮してるとぐだぐだなるため、
PHPのデフォルトに任せることにしたのです。
対象はPHP5.2以上
//link・・・http://mio-koduki.blogspot.com/2012/02/php.html
//第一引数・・・絶対パスかどうか調べたいパス
//返り値・・・絶対パスであればtrue、そうでなければfalse
function is_absolute($url)
{
return
($purl=parse_url($url))!==false
&&isset($purl['scheme'])
&&isset($purl['host'])
&&filter_var
(
$url,
FILTER_VALIDATE_URL,
FILTER_FLAG_PATH_REQUIRED,
);
}
ちなみにhttpだけなどの条件をつけるなら
//link・・・http://mio-koduki.blogspot.com/2012/02/php.html
//第一引数・・・絶対パスかどうか調べたいパス
//返り値・・・絶対パスであればtrue、そうでなければfalse
function is_absolute_only_http($url)
{
return
($purl=parse_url($url))!==false
&&isset($purl['scheme'])
&&$purl['scheme']=='http'
&&isset($purl['host'])
&&filter_var
(
$url,
FILTER_VALIDATE_URL,
FILTER_FLAG_PATH_REQUIRED,
);
}
こんな感じ。
ポイントとなる関数
- parse_url ・・・ URL を解釈し、その構成要素を返す
- filter_var ・・・ 指定したフィルタでデータをフィルタリングする
0 件のコメント:
コメントを投稿