csvでのダウンロードとアップロード。クォートの不具合。

EC-CUBEはcsvでダウンロードし、csvでアップロードができます。

csvダウンロードしたとき、タグに「”(ダブルクオーツ)」を使っているとその前に「\(←円マーク)」いわゆるエスケープキーがついて来ます。

このデータをcsvアップロードでアップロードすると、エスケープキーで入れたはずの円マークが、テキストとして登録されます。

もしくは、このcsvをエクセルで変更した場合、エスケープキーのはずの円マークがテキストになってしまいます。

その結果、円マークはエスケープではなくて、テキストとして解釈されます。

このデータを再びcsvでダウンロードした場合、円マークはエスケープキーが付きます。
この繰り返しで、どんどんとエスケープキーが付いたりしていきます。

これをなんとかしたい・・・・・・。

admin\products\index_csv.php

のL156あたりに、

$tmp = str_replace(“\””, “\\\“”, $tmp);(\は円マーク)

という記述がありますので、それを以下のように変えます。

switch($key) {
ツꀀツꀀツꀀcase ‘main_comment’:
ツꀀツꀀツꀀcase ‘sub_comment1’:
ツꀀツꀀツꀀcase ‘sub_comment2’:
ツꀀツꀀツꀀcase ‘sub_comment3’:
ツꀀツꀀツꀀcase ‘sub_comment4’:
ツꀀツꀀツꀀcase ‘sub_comment5’:
ツꀀツꀀツꀀcase ‘sub_comment6’:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “‘”, $tmp);
ツꀀツꀀツꀀツꀀbreak;
ツꀀツꀀツꀀdefault:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “\\\“”, $tmp);
ツꀀツꀀツꀀ}

タグで使った”を’に変えるための変更です。

ちなみに、改行コードを消す(タグのところで改行を使っている場合)のは下記。
この改行コード、CSVだと邪魔なのです。(1行が1レコードというつくりが崩れるから)

ツꀀツꀀ//▼
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ //▲


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です