我想检查另一个网站上是否存在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
不存在,则此代码仅返回“页面存在”。
答案 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_headers
(Demo):
$headers = get_headers($url, 1);
$statusLine = $headers[0];
list(,$statusCode) = explode(' ', $statusLine, 3);