检查字符串是否只包含PHP中的URL

时间:2013-02-21 20:23:07

标签: php url validation

我想知道这是否是一种正确的检查方法,如果一个字符串只包含一个URL:

if (stripos($string, 'http') == 0 && !preg_match('/\s/',$string)) {
  do_something();
}

stripos()检查字符串是否以“http”开头 preg_match()检查字符串是否包含空格

如果不是这样,我认为该字符串只是一个URL - 但该假设是否有效?有没有更好的方法来实现这一目标?

3 个答案:

答案 0 :(得分:101)

使用filter_var()

if (filter_var($string, FILTER_VALIDATE_URL)) { 
  // you're good
}

过滤器可以更精致。 See the manual了解更多信息。

答案 1 :(得分:8)

在PHP中,有一种更好的方法来验证网址http://www.php.net/manual/en/function.filter-var.php

if(filter_var('http://example.com', FILTER_VALIDATE_URL)))
    echo 'this is URL';

答案 2 :(得分:0)

要更安全地验证URL(以及那些“非ascii”的URL),您可以

  1. 检查过滤器(确保检查manual哪种过滤器适合您的情况)
  2. 检查是否有DNS记录

$string = idn_to_ascii($URL); if(filter_var($string, FILTER_VALIDATE_URL) && checkdnsrr($string, "A")){ // you have a valid URL }