我从网址获取图片时遇到问题。我正在使用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进行编码,这就是它无法正常工作的原因。
任何提示怎么做?感谢
答案 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);