ユーザーが入力した 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 を返します