-1

我从 url 获取图像时遇到问题。我正在使用 file_put_contents ,我发现问题是图像 url 中的空格,因为没有任何空格的图像工作。

我正在获取图像的 URL 看起来是:

/support/member_profile/16-New%20Image%20(With%20Logo)%20(Medium).jpg

我尝试使用 urlencode() 但它仍然无法正常工作。如果我回显编码的网址,我会得到:

%2Fsupport%2Fmember_profile%2F16-New+Image+%28With+Logo%29+%28Medium%29.jpg

我该如何解决这个问题?提前致谢

编辑:

我发现我只需要用 %20 替换空格。使用 urlencode 时,它​​会编码整个 URL,这就是它不起作用的原因。

任何提示如何做到这一点?谢谢

4

2 回答 2

1

使用urldecode转换%20为真实空间。
然后就可以调用了file_put_contents

于 2013-03-27T15:44:25.583 回答
0

您应该只对文件名进行 URL 编码,而不是包括斜杠在内的整个路径:

$path = '/support/member_profile/16-New Image (With Logo) (Medium).jpg';
$p = pathinfo($path, PATHINFO_DIRNAME);
$f = pathinfo($path, PATHINFO_FILENAME);
$e = pathinfo($path, PATHINFO_EXTENSION);

echo sprintf('%s/%s.%s', $p, urlencode($f), urlencode($e));

而且,实际上,您还需要对每个路径部分进行 urlencode 。

$path = '/support/member profile/16-New Image (With Logo) (Medium).jpg';
$p = explode('/', $path);

foreach ($p as $pp)
  $pathparts[] = urlencode($pp);

echo implode('/', $pathparts);
于 2013-03-27T15:44:07.170 回答