0

我有这个网址www.example.com/1.png。我想运行一个循环,如下所示:

for ($i=0; $i<=10; $i++){
$url = 'www.example.com/'.$i.'.png';
}

现在我有 10 个网址。假设 10 个网址中有 7 个是图片,而其他 3 个不可用。我想从每个 o url 下载图像,如果 url 不存在,那么它不会下载任何东西。

这是同样的事情,但我认为更基本的解释是:

www.example.com/1.png --- url exists, so i download the image and save it in my folder.
www.example.com/2.png --- url exists, so i download the image and save it in my folder.
www.example.com/3.png --- url doesnt exist, so i dont download anything
www.example.com/4.png --- url exists, so i download the image and save it in my folder.
www.example.com/5.png --- url exists, so i download the image and save it in my folder.
www.example.com/6.png --- url exists, so i download the image and save it in my folder.
www.example.com/7.png --- url doesnt exist, so i dont download anything
www.example.com/8.png --- url exists, so i download the image and save it in my folder.
www.example.com/9.png --- url exists, so i download the image and save it in my folder.
www.example.com/10.png  --- url doesnt exist, so i dont download anything

抱歉英语不好,有什么建议可以解决这个问题吗?

4

3 回答 3

1

下载图像file_get_contents()会生成一个$http_response_header变量,其中包含您可以检查的 HTTP 响应标头。在此处查看文档

于 2013-03-19T13:20:51.890 回答
0

您可以检查标头是否存在 404 错误。

$file_headers = @get_headers($url);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    //Does not exist
}
else
{
    //Exists, so put download code here
}
于 2013-03-19T13:19:22.737 回答
0

您可以做的是将它们全部排入一个多 curl 请求中,然后过滤掉那些不返回值 < 399 的请求。这样,您可以让 curl 一次请求它们,而不是一次请求一个。还要设置此操作应花费的时间,例如 5 秒。

于 2018-03-29T00:05:37.037 回答