-1

我正在尝试解析 RSS 提要并下载每个项目的所有图像。我正在遍历每个项目并执行以下操作来保存图像:

$url = str_replace(' ', '%20', $itemRSS['image']);
$rand = rand(1111, 99999999);
$img = $_SERVER['DOCUMENT_ROOT'].'/prod_images/'.$rand.'.jpg';
file_put_contents($img, file_get_contents($url));

RSS 提要中大约有 100 个项目,并且在服务器上创建了 100 个图像,但是当我下载它们时只有少数工作,其余的都是无效的。它们都是 jpg 以防您认为这是因为我将它们都称为 .jpg,而有些可能不是。

AHHHH 感谢所有评论的人。我在记事本中打开了一个损坏的并得到了这个:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
Your browser sent a request that this server could not understand.<P>
The request line contained invalid characters following the protocol string.<P>
<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at www.magicbunny.co.uk Port 80</ADDRESS>
</BODY></HTML>
4

1 回答 1

1

该 URL 中将包含不可靠的字符 - 您可能需要用 %20 替换更多的“”。我建议回显网址

echo htmlspecialchars($url);

对于那些不正确的。然后,您可以发现需要替换的其他字符。

如果您想自动执行此操作,请将 URL 分成几部分,并对路径(但不是“/”)、文件名(但不是“.”)进行 urlencode,然后将其重新构建在一起。但是首先从回声开始,这样您就知道涉及多少工作。

于 2012-05-12T13:01:31.613 回答