function _detect_delimiter() { if ($this->_src_file_handler == null) { $this->_errors = getMsg('DCONV', 'CANT_DETECT_DELIMITER'); $this->_settings['csv_delimiter'] = null; return; } foreach ($this->CSV_DELIMITERS as $delimiter) { $_tmp_arr = convertImportDataArray(fgetcsv($this->_src_file_handler, 262144, $delimiter)); rewind($this->_src_file_handler); if ($this->_check_headers_array($_tmp_arr)) { $this->_settings['csv_delimiter'] = $delimiter; return; } } $this->_errors = getMsg('DCONV', 'INVALID_CSV_FORMAT'); $this->_settings['csv_delimiter'] = null; return; }
function _detect_delimiter() { if ($this->_src_file_handler == null) { $this->_errors = $this->MR->getMessage('CANT_DETECT_DELIMITER'); //'can not detect csv-delimiter. source not opened'; $this->_settings['csv_delimiter'] = null; return; } reset($this->CSV_DELIMITERS); do { $delimiter = current($this->CSV_DELIMITERS); $_tmp_arr = convertImportDataArray(fgetcsv($this->_src_file_handler, 262144, $delimiter)); rewind($this->_src_file_handler); if ($this->_check_headers_array($_tmp_arr)) { $this->_settings['csv_delimiter'] = $delimiter; return; } } while (next($this->CSV_DELIMITERS)); $this->_errors = $this->MR->getMessage('INVALID_CSV_FORMAT'); //'invalid csv file format'; $this->_settings['csv_delimiter'] = null; return; }
function convertImportDataArray($text_array) { if (!is_array($text_array)) { return convertImportData($text_array); } foreach ($text_array as $k => $v) { if (is_array($v)) { $text_array[$k] = convertImportDataArray($v); } else { $text_array[$k] = convertImportData($v); } } return $text_array; }
function parse_import_file($fname, $delimetr = ";") { if (!file_exists($fname) or !is_readable($fname)) { return false; } if (!in_array($delimetr, array(",", ";", "\t"))) { return false; } CProfiler::ioStart(); $fh = @fopen($fname, "r"); CProfiler::ioStop(); if ($fh == FALSE) { return false; } CProfiler::ioStart($fname, 'read'); $layout = fgetcsv($fh, 262144, $delimetr); $layout = convertImportDataArray($layout); //!!!!! foreach ($layout as $name => $value) { // echo("!layout: name = $name; value = $value!<br>"); } //!!!!! $csv_data = array(); while (!feof($fh)) { $data = fgetcsv($fh, 262144, $delimetr); $data = convertImportDataArray($data); foreach ($data as $name => $value) { // echo("!data: name = $name; value = $value!<br>"); } $tmp = array(); for ($i = 0; $i < count($layout); $i++) { // echo("<i>layout[$i] = $layout[$i]</i> - "); // echo("data[$i] = $data[$i]<br>"); $tmp[$layout[$i]] = $data[$i]; } $csv_data[] = $tmp; } fclose($fh); CProfiler::ioStop(); return array($layout, $csv_data); }