【问题标题】:CSV import is replacing < and > with _CSV 导入将 < 和 > 替换为 _
【发布时间】:2019-10-21 22:50:28
【问题描述】:

我有以下代码作为 cron 作业的一部分

if (file_exists(DIR_FS_CATALOG . '/orderwise_imports/Zencart_Product_HTML_Info.csv')) {
$fileName = DIR_FS_CATALOG . '/orderwise_imports/Zencart_Product_HTML_Info.csv';
$file = fopen($fileName, "r");
fgetcsv($file, 0, ";", '|'); // read the first line and do nothing with it as we don't need to write the cell names to the database
while ( ($column = fgetcsv ( $file, 0, ';', '|' )) !== FALSE ) {
    $column = array_map(function ($string) {
        $string2 = zen_db_prepare_input($string);
        return str_replace("'", "\'", $string2);
    }, $column);

其中一个 csv 条目的示例是

|2312|;|2312|;|EP-9SS-B-001|;|<p><strong>NINE bars deliver 9 great vitamin and mineral benefits for physical and mental energy in an easy to consume format, perfect for people on the go.</strong></p><p>Start your day the right way&hellip; this perfectly balanced NINE offers a healthy helping of satisfying oats and a tangy-sweet Berry flavour with the added staple of nutritious sunflower, pumpkin, sesame and hemp seeds for the perfect combination of Good Seeds and Great Tastes.</p><p><strong>USP:&nbsp; </strong>Made with natural seeds such as sunflower, pumpkin, sesame and chia.</p><p><strong>WOW FACT! </strong>Naturally vegan friendly range and poweredwith 100% plant protein.</p><p><strong>Lifestyle &amp; Dietary trends: </strong>Vegan; Source of Protein; Gluten Free.</p>|;|1459|

所有开始和结束 html 标记都被替换为下划线。如果我这样做了

print_r($column); 

我看到了

Array ( [0] => 2312 [1] => 2312 [2] => EP-9SS-B-001 [3] => _p__strong_NINE bars deliver 9 great vitamin and mineral benefits for physical and mental energy in an easy to consume format, perfect for people on the go._/strong__/p__p_Start your day the right way… this perfectly balanced NINE offers a healthy helping of satisfying oats and a tangy-sweet Berry flavour with the added staple of nutritious sunflower, pumpkin, sesame and hemp seeds for the perfect combination of Good Seeds and Great Tastes._/p__p__strong_USP:  _/strong_Made with natural seeds such as sunflower, pumpkin, sesame and chia._/p__p__strong_WOW FACT! _/strong_Naturally vegan friendly range and poweredwith 100% plant protein._/p__p__strong_Lifestyle & Dietary trends: _/strong_Vegan; Source of Protein; Gluten Free._/p_ [4] => 1459 ) 

我一生都无法弄清楚为什么会发生这种情况。以前有人遇到过这种情况,您是如何解决的?

【问题讨论】:

  • zen_db_prepare_input 似乎是我唯一可能进行翻译的地方。
  • 我同意 Scuzzy,但是当我在 Zend 中查找该方法时,它不会对 HTML 进行任何剥离 - github.com/ZenMagick/ZenCart/blob/master/zc_admin/includes/… - 当您在 array_map 之前打印出列时,您是否有 ?
  • @blupointmedia 是的,我愿意。
  • @blupointmedia 我下载了一个版本1.5.6c,其中includes/functions/functions_general.php 还定义了一个zen_db_prepare_input 函数,该函数调用zen_sanitize_string,该函数具有preg_replace("/[&lt;&gt;]/", '_', $string)
  • Scuzzy,是的,我刚刚看到了。您能否发布 Steph3071 和其他可能遇到此问题的人的链接和行号?

标签: php fgetcsv


【解决方案1】:

zen_db_prepare_input 执行该转换。 检查这个: http://phpcrossref.com/xref/zencart/includes/functions/functions_general.php.html#zen_db_prepare_input 第 865 行和第 105 行

【讨论】:

  • 确实如此。然而,管理员中的相同功能并没有进行清理。我已经修改了 cron 控制文件,以便它调用基于管理的函数而不是存储端函数。
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多