Php excel reader - ignore cells with special characters

I am using a parser to convert xls to csv http://code.google.com/p/php-excel-reader/

<?php set_time_limit(300); require_once 'excel_reader2.php'; $data = new Spreadsheet_Excel_Reader("file.xls", false, 'UTF-8'); $f = fopen('file.csv', 'w'); for($row = 1; $row <= $data->rowcount(); $row++) { $out = ''; for($col = 1; $col <= $data->colcount(); $col++) { $val = $data->val($row,$col); // escape " and \ characters inside the cell $escaped = preg_replace(array('#"#u', '#\\\\#u', '#[""]#u'), array('"', '\\\\\\\\', '\"'), $val); if(empty($val)) $out .= ','; else $out .= '"' . $escaped . '",'; } // remove last comma (,) fwrite($f, substr($out, 0, -1)); fwrite($f, "\n"); } fclose($f); ?> 

For some strange reason, it skips cells with special characters - for example, ° or ®. How can this be fixed?

+6
source share
1 answer

utf8_decode and html_entity_decode work for me:

 <?php set_time_limit(300); require_once 'excel_reader2.php'; $data = new Spreadsheet_Excel_Reader("file.xls", false, 'UTF-8'); $f = fopen('file.csv', 'w'); for($row = 1; $row <= $data->rowcount(); $row++) { $out = ''; for($col = 1; $col <= $data->colcount(); $col++) { $val = $data->val($row,$col); // escape " and \ characters inside the cell $escaped = preg_replace(array('#"#u', '#\\\\#u', '#[""]#u'), array('"', '\\\\\\\\', '\"'), $val); $escaped = utf8_decode($escaped); //$escaped = html_entity_decode($escaped); if(empty($val)) $out .= ','; else $out .= '"' . $escaped . '",'; } // remove last comma (,) fwrite($f, substr($out, 0, -1)); fwrite($f, "\n"); } fclose($f); ?> 

Output:

 "1","2","3","4","5" "a","b","c","d","e" "6","7","°","9","10" "q","w","e","r","t" "®","12","13","14","15" "z","x","c","v","b" 
+3
source

Source: https://habr.com/ru/post/982930/


All Articles