3

ユーザーが入力した URL を検証するために filter_var を使用しようとしていますが、すべての場合に機能するとは限りません。しばらく前に PHP.netでこの問題の修正をリクエストしましたが、役に立ちませんでした。

正規表現 (はい、いくつかは stackoverflow に投稿されています) 以外に、機能する PHP バージョンやその他の方法はありますか?

私が直面している問題は、次の文字列が検証されていることです。

http://http://www.google.com

テスト スクリプト:

$url = $_REQUEST['url'];

if (filter_var("http://" . $url, FILTER_VALIDATE_URL)) 

   $filter="true"; 

else 

   $filter="false";

echo "Filter var result of concat with http is:" . $filter . "<br>";

期待される結果:

http://www.google.comでスクリプトを実行すると false が返され、www.google.com で実行すると trueが返されることを期待しています

実結果:

どちらの場合も true を返します

4

2 に答える 2

0

より厳密な URL 検証に使用した小さなクラスがあります。それをパブリックドメインに入れることもできます:

https://github.com/franksrevenge/StrictUrlValidator

いくつかのロジック テストに依存し、指定されたホスト名が存在するかどうかをテストし、さらにはサーバーに URL のステータス コードを照会することによって、ますます侵入的になります。もちろん、リモート クエリの動作は構成可能です。

于 2013-05-02T14:22:54.320 に答える