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

yan*_*yan 36 php validation url

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

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

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

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

Joh*_*nde 109

使用 filter_var()

if (filter_var($string, FILTER_VALIDATE_URL)) { 
  // you're good
}
Run Code Online (Sandbox Code Playgroud)

过滤器可以更精致.有关详细信息,请参阅手册.


Win*_*ton 8

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

if(filter_var('http://example.com', FILTER_VALIDATE_URL)))
    echo 'this is URL';
Run Code Online (Sandbox Code Playgroud)