簡體   English   中英

如何在包含圖像的文件夾名稱中用%20替換空格?

[英]How to replace white spaces with %20 in folder names containing images?

我的朋友opencart頁面上的W3驗證程序出現錯誤:

對於元素img上的屬性src,路徑http://myserver.com/cache/data/product/MY PRODUCT / product1-290x214.JPG的值錯誤。 使用%20代替空格。

這表示用戶創建了帶有空格的文件夾(我的產品)。

需要修改代碼以將文件夾名稱中的空格轉換為%20的地方?

使用urlencode 這樣可以解決問題。

如果您擁有完整的URL,則簡單的str_replace()應該可以解決問題。 像這樣:

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

否則,您可以按照一位評論者的建議使用urlencode() 如果您已經有一個指向該站點的路徑,並且僅添加了諸如產品名稱之類的內容,這將非常有用:

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

盡管urlencode()是您應該使用的那個,但是您在這里應該做的是教育您的朋友不要再這樣做,將其重命名為沒有空間並更新數據庫中的路徑。 如果您想要一個解決方案來糾正購物車中所有頁面上的錯誤,則可以在/catalog/modl/tool/image.php文件中使用urlencode()str_replace()

        $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;

如果文件夾名稱或圖像文件名中包含OpenCart圖像調整大小模型,則該模型實際上返回帶空格的圖像路徑。

嘗試使用Rationalboss建議的解決方法來編輯catalog / 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中修復此問題。

簡單的解決方案是編輯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);
    }

在您的/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)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM