是否有效URL

jam*_*mes 19 php url url-validation

可能重复:
检查PHP中是否存在Url的最佳方法是什么?`

我正在寻找一个在php中返回TRUE或FALSE的函数,无论URL是否有效.

isValidURL($网址); 我认为这很简单...这将考虑所有类型的URL可能.

通过有效我希望它引用网络的现有页面或其他类型的文件.它应该存在

gen*_*sis 54

<?php

$url = "http://stack*overflow.org";


if(filter_var($url, FILTER_VALIDATE_URL) === FALSE)
{
        echo "Not valid";
}else{
        echo "VALID";
}
?>
Run Code Online (Sandbox Code Playgroud)

这不检查的顶级域名,虽然

  • @Nemoden:URL stackoverflow.invalid有什么问题?您可以设置自己的本地DNS来处理各种TLD.我有*.lan指向防火墙后面的几个本地开发站点.;) (8认同)
  • http:// stackoverflow也是一个有效的url,有效url不需要扩展,localhost也是一个有效的url (3认同)

Nem*_*den 2

您可以使用函数检查 URL 是否有效,如果 URL 无效,parse_url该函数将返回,否则返回。falsearray

function isValidURL($url) { return (bool)parse_url($url); }
Run Code Online (Sandbox Code Playgroud)

很简单的方法,是吧?:)

  • 然后 `preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/. *)?$|i', $url);` 也不可靠。但我有自己的理由不关心域区域:他们明天将注册更多域区域,我将必须手动将所有域区域添加到我的所有项目中?要检查 URL 是否确实存在,我将使用 cURL 或套接字。对于快速检查这个功能对我来说已经足够了。我只是向OP提出,我不介意他是否不将我的答案标记为已接受。我只是提供一个我自己使用的方法。而且它比“正则表达式”更干净,这就是我喜欢它的原因;-) (2认同)
  • 文档明确指出“此函数并不是为了验证给定的 URL”... (2认同)