php利用get_headers函数判断网页链接是否可以打开
get_headers()是PHP中一个系统级函数,它可以返回一个包含有服务器响应一个HTTP请求所发送的标头的数组。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息,利用它我们可以判断远程文件是否存在或者判断页面链接是否可以打开。
1 2 3 4 5 6 7 8 9 10 11 12 |
$url = 'http://learning.sohu.com/20061129/n246690362.shtml'; if ($arr = @get_headers($url, 1)) { if (preg_match('/200/',$arr[0])) { echo '<pre>'; print_r($arr); echo '</pre>'; } else { echo "无效网页1"; } } else { echo "无效网页2"; } |
遇到的问题:
1. 由于有些站点对无效链接进行了技术处理,有些页面是无效的但get_headers获得的反馈是有效的,如:
http://news.china.com.cn/mts/2021-05/28/content_1171556.htm
2. 有些是有效的但get_headers反馈无效,如:
https://mbd.baidu.com/newspage/data/landingshare?preview=1&pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9913548542233559421%22%2C%22sourceFrom%22%3A%22bjh%22%7D
http://news.tom.com/202105/4717053864.html(浏览器访问后地址自动变为https://news.tom.com/202105/4717053864.html)