file_put_contents和image url空格

时间:2013-03-27 15:24:14

标签: php

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

我正在获取图片的网址如下:

/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替换ONLY空格。当使用urlencode时,它会对整个URL进行编码,这就是它无法正常工作的原因。

任何提示怎么做?感谢

2 个答案:

答案 0 :(得分:1)

使用urldecode%20转换为真实空格 然后你可以拨打file_put_contents

答案 1 :(得分: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);