Browse Source

Добавлен новый файл class.import.parsers.php

master
Repellent 9 years ago
parent
commit
16d31059a0
  1. 153
      import/class.import.parsers.php

153
import/class.import.parsers.php

@ -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…
Cancel
Save