检查HTML页面是否存在

时间:2011-07-28 10:19:43

标签: php fopen

我想检查另一个网站上是否存在HTML页面。更确切地说,我的用户需要将.html页面上传到他们自己的网站上,之后他们需要在我的网站上按“立即验证”。然后,我的网站需要确认其网站上是否存在html页面。

我找到了这段代码:

$url = 'http://domain.tld/my_page.html';
$handle = @fopen($url,'r');
if($handle !== false){
   echo 'Page Exists';
}  else {
   echo 'Page Not Found';
}

但如果my_page.html不存在,则此代码仅返回“页面存在”。

3 个答案:

答案 0 :(得分:2)

编辑1 : 对不起,请不要先提问。

您需要了解服务器将以任何方式回答。你只需要检查然后响应代码,而不是响应文本。或解析文本。

在你的案例服务器答案如下:

Object not found!

 The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again. 

 If you think this is a server error, please contact the webmaster. 
Error 404
work.local
Thu Jul 28 13:22:49 2011
 Apache/2.2.15 (Linux/SUSE)

编辑2 : 您可能希望更好地使用socket_connect而不是fopen来检查文件是否存在

答案 1 :(得分:1)

假设您在PHP中安装了curl扩展,我认为这是您最好的选择: Easy way to test a URL for 404 in PHP?

答案 2 :(得分:1)

如果资源不存在,Web服务器将返回404 HTTP状态代码。资源是你问题中的html文件。

您可以向服务器发出头部请求以了解状态 - 或者只是获取请求。

PHP还为此操作构建了一个函数,它被称为get_headersDemo):

$headers = get_headers($url, 1);
$statusLine = $headers[0];
list(,$statusCode) = explode(' ', $statusLine, 3);