须要判断远程URL是否有效,远程url包括远程图片,网页,视频等等元素javascript
本文主要介绍PHP解决办法中的第三种,这个方法不多用到,可是感受又起来还不错。php
get_headers须要支持
函数介绍:
array get_headers ( string $url [, int $format ] )java
get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。若是失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息。jquery
若是将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。 例如:
数组
简单的例子:浏览器
<?php $url = "http://cn.php.net/images/php.gif"; $array = get_headers($url,1); if(preg_match('/200/',$array[0])){ echo "<pre/>"; print_r($array); }else{ echo "无效url资源!"; }
解释:判断远程图片ur是否有效,根据返回值HTTP中是否有200信息,判断是不是有效url资源服务器
测试结果:
能够看到正确返回 -----------------------测试ok
并发
须要allow_url_fopen=on 开启,有点和file_get_contents函数使用条件相似,可是返回值比较少,能够使用function_exists判断该方法是否能够使用curl
解决方案一: XMLHTTP方案jsp
<script language= "javascript"> function getURL(url) { var xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP"); xmlhttp.open("GET", url, false); xmlhttp.send(); if(xmlhttp.readyState==4) { if(xmlhttp.Status != 200) alert("不存在"); return xmlhttp.Status==200; } return false; } </script> <a href= "http://www.oschina.net/aaa.jsp " onclick= "return getURL(this.href)"> oschina </a>
缺点: 使用ActiveXObject, 因此是IE Only. 非IE内核浏览器不可用.
解决方案二: jQuery扩展
jQuery插件:http://plugins.jquery.com/project/linkchecker
Demo:http://sidashin.ru/linkchecker/
代码只要这样几句:
<script src="jquery.js"></script> <script src="jquery.linkchecker.js"></script> <script type="text/javascript"> $(document).ready( function() { $.linkChecker({query : 'a', linksAtOnce : 2}); }); </script>