我有一个表单可以从用户那里获取一些网址。例如:网址,Facebook地址,Twitter地址,Google+地址等...我的问题是我在提交表单时如何验证这些网址。我尝试使用FILTER_VALIDATE_URL或简单地使用正则表达式来验证PHP中的URL。
在这里,我想知道从用户那里获取这些网址的最佳方法是什么。让他们进入协议总是好的吗?有时他们可能不知道它是http,https,ftp,ftps ..等等。我认为这对某些用户来说很难。
我尝试使用FILTER_VALIDATE_URL这样的东西,但它总是使用协议,有时候我很困惑它的工作原理..
// validate url
$url = 'http://www.example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
输出:有效
// validate url
$url = 'hp://www.example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
输出:有效
// validate url
$url = 'http://example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
输出:有效
// validate url
$url = 'http://example.com?id=32&name=kamalani';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
OUTPUT : valid
您能否告诉我从用户那里获取网址的最佳方式是什么?这些是如何验证的?
任何评论都非常赞赏..
谢谢。
答案 0 :(得分:0)
您需要使用正则表达式来检查有效网址。
请试试这个:
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$URL= 'http://example.com?id=32&name=kamalani';
if(preg_match($pattern, $URL) ){
echo "<br>valid";
} else{
echo "<br>invalid";
}
<强>输出强>
valid