5

http://で始まる限り、FILTER_VALIDATE_URLを使用した有効なURLになると想像できる文字列とintでテストしました。では、なぜFILTER_VALIDATE_URLが必要なのですか?有効にしたいときはいつでも、入力にhttp://を追加しないのはなぜですか?

var_dump(filter_var ('http://example',FILTER_VALIDATE_URL ));
4

1 に答える 1

10

技術的には、スキーム(などhttp://)で始まり、その後に有効なURI文字を含むURIは、 RFC3986の公式URI仕様に従って有効です

各URIは、セクション3.1で定義されているように、そのスキーム内で識別子を割り当てるための仕様を参照するスキーム名で始まります。そのため、URI構文は、統合された拡張可能なネーミングシステムであり、各スキ​​ームの仕様により、そのスキームを使用する識別子の構文とセマンティクスがさらに制限される場合があります。

だから、あなたが得ているリターンについては何も奇妙なことはありません-それが起こるはずです。filter_varフラグとともにwithを使用する必要がある理由についてはFILTER_VALIDATE_URL、考えられるすべてのURLスキームに対して次のようなことを行うよりも、意味的に適切です。同意しませんか?

if (strpos($url, 'http://') === 0
    || strpos($url, 'ftp://') === 0
    || strpos($url, 'telnet://') === 0
) {
    // it's a valid URL!
}
于 2012-08-29T02:40:18.313 に答える