質問 > 管理機能 > 商品マスタCSV出力時の[ " ] [ \ ]について |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
seasoft |
投稿日時: 2009/2/10 14:40
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について いつも有用な情報提供ありがとうございます。
PHP 関数に任せて、サクっと・・・と思いましたが、なかなか難がありそうですね。 現実装を見ましたが、結構バラバラと書かれていて、変更箇所が多そう。とりあえず、主要部分の対応にしようかな… あと、気になったのは SC_Utils に、CSV 関係のメソッドが存在していることですが、SC_Helper_CSV との住み分けとかあるのですかね?
|
nanasess |
投稿日時: 2009/2/10 13:00
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について おおこうちです.
引用:
こちらは Informational ですので, 正式な標準化ではなくて, 「こうした方が良いよ」という「情報」ですね. 引用:
1.x → 2.x の時に試みましたが, 完全に準拠しようと思うと, 非常にしんどいので断念しましたorz 本来なら, charset や, ヘッダ行の有無も mime-type で指定するとか, may or may not な規定がいくつかあるとか... あと, text/csv な mime-type で, すべての UA が確実に DL できるかどうかが心配です. application/octet-stream にしておくのが無難だと思います. 引用:
詳細は失念してしまいましたが, かなりイケてない関数なので準拠してないと思われますorz |
seasoft |
投稿日時: 2009/2/10 12:14
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について 某ショッピングサイト構築案件で、CSV 登録について調べていたら、CSV に関する RFC が出てますね。
RFC4180 http://www.rfc-editor.org/rfc/rfc4180.txt ざっと確認した限り、Excel も RFC 準拠ですね。 ・・・結論。EC-CUBE の CSV も RFC 準拠に改訂しようかと思うのですが、いかがでしょう? # そういえば、PHP にも CSV を扱える関数があったような気がしますが、それって RFC に準拠しているのかなぁ〜?
|
yuta |
投稿日時: 2009/2/4 18:32
対応状況: −−−
|
常連 登録日: 2009/1/15 居住地: 投稿: 54 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について ありがとうございます!
教えていただいた、 $tmp = str_replace("\"", "\"\"", $tmp); で試したところ、無事に動作いたしました。 本当に有り難うございました!! CSV更新テストもしましたが今のところ無事に動いています。 「 " → "" 」 も 「 " → \" 」 も、 CSVダウンロード時に追加されるもののようですが、 CSVアップロードで更新作業をする際には再び、 「 " → " 」 または 「 "\ → " 」 と余分な文字を削除して 「"」 の状態にもどし、新しいCSVで新規登録するときと同じ規格でアップロードするから大丈夫なのではないでしょうか?? (もしエラーがでるなら新規CSVの登録時にもエラーとなるはず??) しばらくこのままでCSVでの作業を行ってみて もしもエラーが出たら報告致します! 文字の「エスケープ」についても調べて勉強してみますね、 どうもありがとうございました! p.s. 良くわかりませんが、今回のことを調べていたときに以下のサイトにも情報がありました。 私にはまだわかりませんが、参考になるかもしれないのでリンク張っておきます。 ▼参考サイト http://www.jaga99.com/blog/?cat=5 |
seasoft |
投稿日時: 2009/2/4 17:58
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について 私が上で「現実装も、本当に適切なのか疑問もあります」と書いたのは、まさに yuta 様がご指摘されている部分なんですよね。
CSV って、ある程度基本は決まっていても、実装によって様々なんですよね。「 " → "" 」や「 " → \" 」は、どれが正しいとは言い切れない面があるんですよね。 ちゃんと確認してはいませんが、EC-CUBE でCSV出力して、EC-CUBE でCSV入力するケースでは「 " → \" 」という変換が正しいのでしょう。 その、EC-CUBE 用のCSVを他のソフトで読んでいるのですから、変になって当然なのです。 しかし、「 " → \" 」という変換をするならば、事前に「 \ → \\ 」という変換も行う必要があるはずなんですよね。その辺りを行っていないのも、個人的には疑問ですね。 まぁ、それはさておき、yuta 様の目的を達成するには、
ただし、その CSV は OO-calc 向けのファイルになりますので、EC-CUBE に読み込ませると異常動作をすると思いますのでご承知を。 文字の「エスケープ」について勉強されると、理解できるようになると思いますよ。
|
yuta |
投稿日時: 2009/2/4 17:21
対応状況: −−−
|
常連 登録日: 2009/1/15 居住地: 投稿: 54 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について 有り難うございます。サクラエディタで確認しましたところ、正しく出力されておりました。表計算ソフトの読み込みの際のエラーだったようです。
ついでに現在出店中の某ショッピングモールでダウンロードしたCSVデータを見てみました。 こちらのCSVデータは今までOpenOfficeでもエクセルでもエラーがでていなかったため、なぜだろう?と思ったので。 そうすると、こちらは逆に以下のような仕様となっていました。 ◎某ショッピングモールの仕様 【元データ】 <div class="aaa">.... 【ダウンロード用csvデータ】 <div class=""aaa""> ["]の部分に[\]を追加し[\"]とするのではなく ["]の部分にもう一つ["]を足し[""]とすることで、 一般的な表計算ソフトでcsv読み込み時に指定される、 「テキストの区切り記号(")」 によるエラーを回避していました。 ということは、最初に削除した、 $tmp = str_replace("\"", "\\\"", $tmp); をうまくいじれば[""]としてのCSV出力が可能なのでしょうか? |
seasoft |
投稿日時: 2009/2/4 17:05
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について まずは、プレーンテキストを読めるソフト(秀丸エディタやメモ帳)で確認すると良いとおもう。
表計算ソフトは、読み込み時に変換するから。
|
yuta |
投稿日時: 2009/2/4 16:46
対応状況: −−−
|
常連 登録日: 2009/1/15 居住地: 投稿: 54 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について OpenOffice 3.0.0
のCalcを使っています。 今の状態でも各項目で置換を行えば綺麗なファイルがだせるので、 簡単に何とかなる状態ではあります。 openoffice http://ja.openoffice.org/ |
seasoft |
投稿日時: 2009/2/4 16:10
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について ファイルの内容確認は何のソフトで行っていますか?
|
yuta |
投稿日時: 2009/2/4 15:58
対応状況: −−−
|
常連 登録日: 2009/1/15 居住地: 投稿: 54 |
Re: 商品マスタCSV出力時の[ " ] [ \ ]について >seasoftさん
ありがとうございます! 早速試してみたところ、\が消えました! ただ、 各項目で一番初めに出てくる ["] が消えて、最後の部分に ["] がつくようになりました。 --------------------------------- 例) 元のデータ <div class="aaaa">..........</div> ダウンロードデータ <div class=aaaa">..........</div>" --------------------------------- phpがほとんどわからないもので、 グーグル検索してもいまいちどこをいじれば良いかわかりませんでした・・・ 何度も質問ばかりですみませんが、 もしお分かりでしたらアドバイスお願いします。 |
« 1 (2) 3 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |