Search code examples
phpfgetcsv

CSV import is replacing < and > with _


I have the following code as part of a cron job

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);

An example of one of the csv entries is

|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|

All the opening and closing html tags are being replaced with underscores. If I do

print_r($column); 

I am seeing

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 ) 

I can't for the life of me figure out why this is happening. Anyone come across this before, and how did you resolve it?


Solution

  • zen_db_prepare_input does that transition. check this: http://phpcrossref.com/xref/zencart/includes/functions/functions_general.php.html#zen_db_prepare_input line 865 and line 105