首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP客户端检查网站的网址是否有效?

如何在PHP客户端检查网站的网址是否有效?
EN

Stack Overflow用户
提问于 2011-04-27 07:58:57
回答 4查看 1.3K关注 0票数 1

我已经搜索了我们的SO问题,但找到的解决方案是基于调用从使用ping函数执行的system命令。

我的网络主机服务器不允许我这样做。我该怎么办?

求你帮帮我,南。

备注

我需要从client/web-browser那边查一下。

EN

回答 4

Stack Overflow用户

发布于 2011-04-27 08:18:14

由于无法使用ajax加载外部网页以检查页面是否响应,因此可以执行以下操作:

  • 首先使用regexp:

检查url字符串是否有效。

javascript:

编辑了更多的宽恕。由于javascript不支持没有任何第三方库的unicode字符匹配,所以我选择了以下方法:

代码语言:javascript
复制
function Validate(url){ 
    var pattern = /(https?:\/\/)?.+\.[a-z]{2,4}/i 
    return pattern.test(url); 
} 

alert(Validate("http://abcü好le2.com/?query=test&test=1")); //true
alert(Validate("https://hurmårdu.se/blog/?test=1")); //true
alert(Validate("abcü好le2.com/?query=test&test=1")); //true
alert(Validate("hurmårduse/blog/?test=1")); //false
alert(Validate("hurmårduse")); //false

注意:为了使这个函数更好,我们可以在字符串的开头添加对http://的支持,如果它不包含它。另外,如果您对unicode regexp感兴趣:http://xregexp.com/plugins/

如果

  • 是,那么向后端
  • 发出一个ajax请求--后端接受与ajax请求一起发送的url,并将Flave给您的解决方案加载到url中,然后返回url是否响应:

php:

代码语言:javascript
复制
$url = $_POST["url"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);       
curl_close($ch);
if(strlen($output)){
    return json_encode(array("is_valid" => true, "value" => $url));
}else{
    return json_encode(array("is_valid" => false, "value" => $url));
}

注意:从ajax请求发送的数据的代码需要卫生。

票数 2
EN

Stack Overflow用户

发布于 2011-04-27 08:02:40

主机允许使用curl或socket()函数吗?或者使用fopen命令执行远程包含?这可能比使用system("ping")命令要好得多。

票数 0
EN

Stack Overflow用户

发布于 2011-04-27 08:03:14

一个简单的签入php应该是

代码语言:javascript
复制
if(strlen(file_get_contents('http://google.com')){ // do something }

客户端可能很棘手,因为大多数浏览器都不允许跨端脚本。

或者,如果安装了php-curl,也可以使用php-curl。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5801034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档