Repellent
8 years ago
1 changed files with 153 additions and 0 deletions
@ -0,0 +1,153 @@ |
|||||||
|
<? |
||||||
|
/** |
||||||
|
* Класс, включающий все парсеры импорта |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage module_DocManager |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
|
||||||
|
class ModuleImportParsers |
||||||
|
{ |
||||||
|
/* !CSV */ |
||||||
|
function CSV2Array($csvfile, $sep=';', $protect='"') |
||||||
|
{ |
||||||
|
$data = file_get_contents($csvfile); |
||||||
|
|
||||||
|
if (! $data) |
||||||
|
return; |
||||||
|
|
||||||
|
// проверяем кодировку |
||||||
|
if (mb_check_encoding($data, 'cp1251')) |
||||||
|
{ |
||||||
|
$utf8_tmp = true; |
||||||
|
$csvfile = $csvfile . '.utf8.tmp'; |
||||||
|
$data = @iconv('cp1251', 'UTF-8', $data); |
||||||
|
file_put_contents($csvfile, $data); |
||||||
|
} |
||||||
|
|
||||||
|
$handle = fopen($csvfile, 'r'); |
||||||
|
|
||||||
|
// берём первую строку как теги |
||||||
|
$tags = fgetcsv($handle, 0, $sep, $protect); |
||||||
|
|
||||||
|
array_walk_recursive($tags, 'trim'); |
||||||
|
|
||||||
|
$ii = 0; |
||||||
|
|
||||||
|
$items = []; |
||||||
|
|
||||||
|
while ($item = fgetcsv($handle, 0, $sep, $protect)) |
||||||
|
{ |
||||||
|
array_walk_recursive($item, 'trim'); |
||||||
|
|
||||||
|
foreach($item AS $key => $val) |
||||||
|
{ |
||||||
|
if ($val != '') |
||||||
|
$items[$ii][$tags[$key]] = $val; |
||||||
|
} |
||||||
|
|
||||||
|
$ii++; |
||||||
|
} |
||||||
|
|
||||||
|
fclose($handle); |
||||||
|
|
||||||
|
if ($utf8_tmp) |
||||||
|
unlink($csvfile); |
||||||
|
|
||||||
|
$result = |
||||||
|
[ |
||||||
|
'num' => count($items), |
||||||
|
'tags' => $tags, |
||||||
|
'rows' => $items |
||||||
|
]; |
||||||
|
|
||||||
|
unset($tags, $items); |
||||||
|
|
||||||
|
return $result; |
||||||
|
} |
||||||
|
|
||||||
|
/* !Excel */ |
||||||
|
function Excel2Array($fname) |
||||||
|
{ |
||||||
|
require_once(dirname(__FILE__).'/excel_reader.php'); |
||||||
|
|
||||||
|
$Excel = new Spreadsheet_Excel_Reader(); // создаем объект |
||||||
|
|
||||||
|
$Excel->setOutputEncoding('UTF-8'); // устанавливаем кодировку |
||||||
|
|
||||||
|
$Excel->read($fname); // открываем файл |
||||||
|
|
||||||
|
$tags = $Excel->sheets[0]['cells'][1]; // Определяем теги |
||||||
|
|
||||||
|
$items = []; |
||||||
|
|
||||||
|
$ii = 0; |
||||||
|
|
||||||
|
foreach ($Excel->sheets[0]['cells'] AS $key => $value) |
||||||
|
{ |
||||||
|
if ($key == 1) |
||||||
|
continue; |
||||||
|
|
||||||
|
foreach($value AS $k => $val) |
||||||
|
{ |
||||||
|
$items[$ii][$tags[$k]] = $val; |
||||||
|
} |
||||||
|
|
||||||
|
$ii++; |
||||||
|
} |
||||||
|
|
||||||
|
$result = |
||||||
|
[ |
||||||
|
'num' => count($items), |
||||||
|
'tags' => $tags, |
||||||
|
'rows' => $items |
||||||
|
]; |
||||||
|
|
||||||
|
unset($Excel, $tags, $items); |
||||||
|
|
||||||
|
return $result; |
||||||
|
} |
||||||
|
|
||||||
|
/* !XML */ |
||||||
|
function XML2Array($fname) |
||||||
|
{ |
||||||
|
$xml = (simplexml_load_file($fname)); |
||||||
|
|
||||||
|
|
||||||
|
$xml = object2array($xml); |
||||||
|
|
||||||
|
unset ($xml['@attributes']); |
||||||
|
|
||||||
|
$a = array_values($xml); |
||||||
|
|
||||||
|
$tags = []; // Определяем теги |
||||||
|
|
||||||
|
foreach ($a[0][0] AS $key => $value) |
||||||
|
{ |
||||||
|
$tags[] = $key; |
||||||
|
} |
||||||
|
|
||||||
|
$items = []; |
||||||
|
|
||||||
|
foreach ($a[0] AS $key => $row) |
||||||
|
{ |
||||||
|
foreach($row AS $k => $val) |
||||||
|
{ |
||||||
|
if ($val != '') |
||||||
|
$items[$key][$k] = $val; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$result = |
||||||
|
[ |
||||||
|
'num' => count($items), |
||||||
|
'tags' => $tags, |
||||||
|
'rows' => $items |
||||||
|
]; |
||||||
|
|
||||||
|
unset($xml, $a, $tags, $items); |
||||||
|
|
||||||
|
return $result; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue