file_put_contents会创建损坏的图像

时间:2012-05-12 11:41:37

标签: php rss

我正在尝试解析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 Feed中大约有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>

1 个答案:

答案 0 :(得分:1)

网址中会包含狡猾的字符 - 你可能需要用%20替换更多的“”。 我建议回复网址

echo htmlspecialchars($url);

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

如果您想自动执行此操作,请将URL分解为多个部分,并对路径(但不是“/”),文件名(但不是“。”)进行urlencode,然后将其重新组合在一起。但首先从回声开始,以便了解涉及的工作量。