の使用法をparse_url()
以下に示しますが、@wrikken は、URL が「有効」かどうかを単純に検証するためのはるかに優れた方法を提供していますfilter_var()
。parse_url()
指定された URL 文字列をその構成要素に単純に解析し、URL が壊滅的に壊れていfalse
ない限り、明らかに値を返しません。
filter_var()
ドメイン名に使用されているアンダースコアなどのマイナーなものを検出するのに十分な感度があります。
var_dump(
filter_var(
'http://stack-overflow.com/questions/19437105/using-regx-how-to-validate-url?noredirect=1#comment28819663_19437105',
FILTER_VALIDATE_URL
)
);
//output: string(113) "http://stack-overflow.com/questions/19437105/using-regx-how-to-validate-url?noredirect=1#comment28819663_19437105"
var_dump(
filter_var(
'http://stack_overflow.com/questions/19437105/using-regx-how-to-validate-url?noredirect=1#comment28819663_19437105',
FILTER_VALIDATE_URL
)
);
//output: bool(false)
parse_url()
すでに有効であることがわかっている URL の部分を抽出することに任せた方がよいでしょう。
var_dump(parse_url('http://stackoverflow.com/questions/19437105/using-regx-how-to-validate-url?noredirect=1#comment28819663_19437105'));
出力:
array(5) {
["scheme"]=>
string(4) "http"
["host"]=>
string(17) "stackoverflow.com"
["path"]=>
string(50) "/questions/19437105/using-regx-how-to-validate-url"
["query"]=>
string(12) "noredirect=1"
["fragment"]=>
string(24) "comment28819663_19437105"
}
またはどうですか: