2

我有一个表格可以从用户那里获取一些网址。例如:网址、Facebook 地址、Twitter 地址、Google+ 地址等...我的问题是如何在提交表单时验证这些 url。我尝试使用 FILTER_VALIDATE_URL 或简单地使用正则表达式来验证 PHP 中的 URL。

在这里,我想知道从用户那里获取此类 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

你能告诉我从用户那里获取 url 的最佳方法是什么以及这些方法是如何验证的吗?

任何评论都非常感谢..

谢谢你。

4

1 回答 1

0

您需要在这里使用正则表达式来检查有效的 url。

请试试这个:

  $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
于 2013-01-15T05:57:47.990 回答