Добавлен новый файл class.import.parsers.php
This commit is contained in:
parent
bff8578661
commit
16d31059a0
153
import/class.import.parsers.php
Normal file
153
import/class.import.parsers.php
Normal file
@ -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…
x
Reference in New Issue
Block a user