检查字符串是否为URL

Reh*_*hmy 15 php regex url

我看过很多问题,但由于我想要一个更简单的案例,因此无法理解它是如何工作的.

如果我们有文本,无论它是什么,我想检查它是否是一个URL.

$text = "something.com"; //this is a url

if (!IsUrl($text)){
    echo "No it is not url";
    exit; // die well
}else{
    echo "Yes it is url";
    // my else codes goes
}

function IsUrl($url){
    // ???
}
Run Code Online (Sandbox Code Playgroud)

在JS被阻止的情况下,还有其他方法而不是用JavaScript检查吗?

eny*_*gma 24

PHP的filter_var功能就是你所需要的.寻找FILTER_VALIDATE_URL.您还可以设置flags微调您的实现.
不需要正则表达式......

  • 从技术上讲,根据URL(或URI)的定义,它需要一个协议(http,https等)作为字符串中的第一件事.您所描述的只是完整URL的域和路径部分. (7认同)
  • 但是,只有在URL前面使用"http"时才会出现这种情况.例如,www.google.com将无法正确验证. (2认同)

use*_*359 21

以下代码对我有用:

if(filter_var($text, FILTER_VALIDATE_URL))
{
    echo "Yes it is url";
    exit; // die well
}
else
{
    echo "No it is not url";
   // my else codes goes
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用标志在URL上指定RFC合规性和其他要求.有关详细信息,请参阅PHP验证过滤器.


JKi*_*rtz 16

http://www.php.net/manual/en/function.preg-match.php#93824

<?php 
    $regex = "((https?|ftp)\:\/\/)?"; // SCHEME 
    $regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass 
    $regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP 
    $regex .= "(\:[0-9]{2,5})?"; // Port 
    $regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path 
    $regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query 
    $regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor 

       if(preg_match("/^$regex$/i", $url)) // `i` flag for case-insensitive
       { 
               return true; 
       } 
?>
Run Code Online (Sandbox Code Playgroud)

但是您的示例网址已经过简化,(\w+)\.(\w+)会与之匹配.其他人提到filter_var的只是一个,filter_var($url, FILTER_VALIDATE_URL)但它似乎不喜欢非ascii字符所以,要小心......


Sin*_*dre 5

检查它是否是有效的URL(example.com 不是有效的URL)

    function isValidURL($url)
    {
        return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*
        (:[0-9]+)?(/.*)?$|i', $url);
    }
Run Code Online (Sandbox Code Playgroud)

如何使用功能:

    if(!isValidURL($fldbanner_url))
    {
        $errMsg .= "* Please enter valid URL including http://<br>";
    }
Run Code Online (Sandbox Code Playgroud)

资料来源:http://phpcentral.com/208-url-validation-in-php.html