如何在包含图像的文件夹名称中用%20替换空格?

时间:2012-12-23 22:33:31

标签: php opencart

我的朋友opencart页面上的W3 Validator收到错误:

  

元素img上属性src的错误值http://myserver.com/cache/data/product/MY PRODUCT / product1-290x214.JPG:路径组件中的空格。使用%20代替空格。

表示用户创建了带有空格的文件夹(MY PRODUCT)。

需要修改代码才能将文件夹名称中的空格转换为%20?

6 个答案:

答案 0 :(得分:2)

使用urlencode。这将解决问题。

答案 1 :(得分:2)

如果您拥有完整的网址,那么简单的str_replace()应该可以解决问题。像这样:

echo str_replace(' ','%20',$full_link);

否则,您可以按照一位评论者的建议使用urlencode()。如果您已经拥有该站点的路径并且只是添加类似产品名称的内容,那么这非常有用:

echo 'http://site.name/hello/'.urlencode($product);

答案 2 :(得分:2)

虽然urlencode()是您应该使用的,但您应该在教育您的朋友再次执行此操作,将其重命名为没有空格并更新数据库中的路径。如果您想要一个解决方案,可以在购物车中的所有页面中对购物车进行更正,那么您可以在urlencode()文件中使用str_replace()/catalog/modl/tool/image.php

        $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;

需要更改,要么在其后添加一行以添加%20,要么编辑该行以将其包含在一行中。当然你也应该在vQmod中执行此操作,而不仅仅是编辑你的核心文件,这样当你的朋友的网站更新到更新版本时它就会保留

修改

如果上面的代码不起作用,您可以在直接构建后修改返回的URL。这些是两个返回行(第一个用于HTTPS图像,第二个用于HTTP)

        return HTTPS_IMAGE . $new_image;
    } else {
        return HTTP_IMAGE . $new_image;

答案 3 :(得分:0)

Opencart图像调整大小模型确实返回带空格的图像路径,如果您在文件夹名称或图像文件名中有此类。

尝试使用rationalboss建议的解决方法编辑目录/ model / tool / image.php最后一行:

return $this->config->get('config_ssl') . 'image/' . str_replace(' ','%20', $new_image);

return $this->config->get('config_url') . 'image/' . str_replace(' ','%20', $new_image);

Opencart仍会上传带有空格,UTF-8字符等的图片。我想,这必须在下一个Opencart版本中修复。

答案 4 :(得分:0)

简单的解决方案是编辑catalog / model / tool / image.php

    if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
        return $this->config->get('config_ssl') . 'image/' . str_replace(' ','%20', $new_image);
    } else {
        return $this->config->get('config_url') . 'image/' . str_replace(' ','%20', $new_image);
    }

答案 5 :(得分:0)

之后的/catalog/model/tool/image.php文件中
$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . $type .'.' . $extension;

添加

$new_image = implode('/', array_map('rawurlencode', explode('/', $new_image)));