0

友達の opencart ページの W3 Validator でエラーが発生します。

要素 img の属性 src の不正な値http://myserver.com/cache/data/product/MY PRODUCT/product1-290x214.JPG: パス コンポーネントの空白。スペースの代わりに %20 を使用します。

これは、ユーザーが空白を含むフォルダー (MY PRODUCT) を作成したことを示しています。

フォルダー名の空白を %20 に変換するためにコードを変更する必要があるのはどこですか?

4

6 に答える 6

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か、その行を編集して1つの行に含めるように変更する必要があります。もちろん、コアファイルを編集するだけでなく、vQmodでもこれを行う必要があります。これにより、友人のサイトが新しいバージョンに更新されたときにコアファイルが残ります。

編集

上記のコードが機能しない場合は、直接ビルドされた後に返されたURLを操作できます。これらは2つの戻り行です(最初はHTTPS画像用、2番目はHTTP用)

        return HTTPS_IMAGE . $new_image;
    } else {
        return HTTP_IMAGE . $new_image;
于 2012-12-23T23:34:09.243 に答える
2

urlencodeを使用します。これで問題は解決します。

于 2012-12-23T22:36:06.563 に答える
2

完全な URL を持っている場合は、単純なstr_replace()でうまくいくはずです。このようなもの:

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

それ以外の場合は、あるコメンターがurlencode()を使用するように提案したようにすることができます。これは、サイトへのパスが既にあり、製品名などを追加するだけの場合に便利です。

echo 'http://site.name/hello/'.urlencode($product);
于 2012-12-23T22:36:43.577 に答える
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)));
于 2015-02-01T19:23:32.920 に答える