ページ 11

Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 15:06
by min-o
-----
ご利用のサーバ: さくらインターネット ビジネスプロ
MODXのバージョン:  1.0.6J-r8
PHPのバージョン:   PHP 5.2.17
MySQLのバージョン: 5.5.28-log
ブラウザ: firefox 17(win xp/mac)
-----

お世話になっております。
Csv2Docを使って、コンテンツを登録しているのですが、content変数内にhtmlソースを使っています。
この場合"(ダブルコーテーション)の扱いに悩んでいます。

基にしているCSVが別のmodxサイトのデータベースから、コンテンツ部分を書き出し、エクセルで不要なものを削除、修正してアップロード用のcsvを作成しました。
データベースからCSV書き出し時に
---
フィールド区切り記号 ,
フィールド囲み記号 "
フィールドのエスケープ記号 \
Remove CRLF characters within fields チェック
---
にしました。

content変数内の"は\のままアップロードしたところ、class=\codetable\ となってしまいます。

\を"" に一括変換してアップロードすると、Csv2Docの確認では class="codetable" なのですが、
実際のリソースを開いてみると class=""codetable"" になってしまいます。

なにか良い方法はないでしょうか?
よろしくお願いいたします。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 15:25
by yama
添付のファイルを解答してmanager/actions/ディレクトリに上書きしてみてください。
管理画面のレポート→システム情報→詳細情報のタブにmagic_quotes_gpcという項目が追加されると思いますが、この値を教えていただけますでしょうか。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 16:11
by min-o
返信ありがとうございます。

添付のファイルを解凍したところ
以下のエラーが出てファイル容量が0kb(開いても白紙)になります…
--------
正常に解凍できません。CRCが一致しないか、出力先ファイルが使用中です。
--------

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 16:13
by yama
sysinfo.static.zip
(5.16 KiB) ダウンロード数: 754 回
アーカイバを変更してみました。こちらだとどうでしょう?

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 16:21
by min-o
今度は解凍できました。

magic_quotes_gpc On

になっています。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 16:26
by yama
https://www.google.co.jp/search?q=php_f ... i+htaccess
php.iniにmagic_quotes_gpc = Offと書くか、.htaccessにphp_flag magic_quotes_gpc Offと記述すると改善されるでしょうか?

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い  【解決済み】

Posted: 2013年1月15日(火) 16:37
by min-o
php.iniにmagic_quotes_gpc = Off で変更したところ
以下の結果になりました。

× csv class=\codetable\ → 確認Csv2Doc class=\codetable\ → リソース class=\codetable\ 
○ csv class=””codetable"" → 確認Csv2Doc class="codetable" →リソース class="codetable" 

CSVファイルで””にすればうまくいきました!
ありがとうございます。

製作中は magic_quotes_gpc = Off
一通り作業終了後は magic_quotes_gpc = On に戻して運用します。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月15日(火) 20:56
by yama
もしかするとMODX本体のバグかも?
manager/includes/quotes_stripper.inc.phpをテキストエディタで開いて、
if(!get_magic_quotes_gpc()) return;
の次の行に
exit;
と記述して、サイトや管理画面が表示されるでしょうか?表示された場合は、ここに処理が渡ってないのでMODX本体のバグの可能性があります。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 10:13
by min-o
manager/includes/quotes_stripper.inc.phpをテキストエディタで開いて、
if(!get_magic_quotes_gpc()) return;
の次の行に
exit;
やってみましたところ、
管理画面もサイトも問題なく表示されてます…。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 11:15
by yama
今度はif(!get_magic_quotes_gpc()) return;
の前の行に
exit;
を記述すると変化あるでしょうか?
何も変わらない場合は、exit;を書いたまま、
manager/includes/initialize.inc.phpの
if (version_compare(PHP_VERSION, '5.3.0') < 0) @set_magic_quotes_runtime(0);
この行を削除してみてください。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 11:31
by min-o
if(!get_magic_quotes_gpc()) return;
の前の行に
exit;
変化なしです。
manager/includes/initialize.inc.phpの
if (version_compare(PHP_VERSION, '5.3.0') < 0) @set_magic_quotes_runtime(0);
この行を削除
//でコメントにしてアップしましたが、こちらも変化なしです。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 12:27
by yama
それではいったん元に戻して、manager/includes/initialize.inc.phpに
if (get_magic_quotes_gpc()) include_once "{$core_path}quotes_stripper.inc.php";
上記のような記述があると思います。これを
if (get_magic_quotes_gpc()) exit;
このように書き換えると変化あるでしょうか?(画面が真っ白になれば正しいです)

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 12:56
by min-o
manager/includes/initialize.inc.phpに
if (get_magic_quotes_gpc()) include_once "{$core_path}quotes_stripper.inc.php";
これを
if (get_magic_quotes_gpc()) exit;
このように書き換える
やってみましたが、やはり変化なく、普通に表示しています。

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 13:19
by yama
なんだか変ですね。(とりあえずサーバ設定で問題なく動作するようですが)

コードを調べているうちにPHP5.4環境で発生するバグをメール送信まわりでひとつ見つけました。次回リリースに含めます

Re: Csv2Doc用のCSVファイルでcontent変数内の"の扱い

Posted: 2013年1月16日(水) 14:48
by min-o
了解しました。一旦元に戻しました。
おつかれさまでした。