PHP判断网页能否正常打开的函数

$url = ‘http://www.baidu.com';
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
if(false == $contents)
{
echo ‘Curl error: ‘ . curl_error($ch);
}
else
{
….
}
用这个函数怎么让域名过去的网站返回假?Service Unavailable 这种提示的
用这个函数怎么让域名过期的网站返回假?Service Unavailable 这种提示的

如果没有后续操作的话直接用$hd = fopen('url', 'r+');就行了,如果$hd === false就是打不开咯追问

具体加在什么地方?


我的方法是这样的 你说的代码加在哪里合适?

那我对正常网页的判断也要返回值啊 我是想在我的方法中加入你说的那段代码 然后来实现对域名过期的域名也返回假

追答

我给你那个如果能打开就返回 true, 否则 返回false,ip2 和 ip3你自己替换为另外两个ip就行了。功能上和你原来的函数没什么差异。

对于你这种简单的判断网页是否能打开用fopen函数就行,用不到curl。curl主要是用来处理比较复杂的交互操作的。

追问

Warning: fopen(http://www.zbbangnong.com) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections in

追答

把fopen($url, 'r+')变成fopen($url, 'r')就行了。太久不用这个了,呵呵。我测试了能连上

追问

Parse error: syntax error, unexpected T_RETURN in D:\wamp\www\webmanage5\include\function.php on line 63
并且这个不准确 过期的域名 和 根本打不开的域名都是显示能打开

追答

...63行是什么?

我说的是 把fopen($url, 'r+')变成fopen($url, 'r')就行了,修改后这一行应该是

return fopen($url, 'r') !== false;

你不会把这一行整个给改成 fopen($url, 'r')了吧?

追问

额 这个函数判断过期的域名会直接报错 Warning: fopen(http://www.lznjxy.com) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in

追答

还是那行,改成 return @fopen($url, 'r') !== false;

@是用来压制错误信息的 (推荐仅用于你确定该错误不影响程序运行的情况下,不要滥用哦,比如$conn = @mysql_connect(....);这个虽然不报错了,可是后面的程序就没法儿运行了,而对于你目前这种测试操作就没有这个问题)

追问

return @fopen($url, 'r') !== false; 可以把这句改成if() return false;吗?

追答

可以,不过在内核中多一次if多一次入栈出栈的操作。
if (false === @fopen($url, 'r')) return false;
return true;

追问

谢了

追答

不客气

温馨提示:答案为网友推荐,仅供参考
相似回答