Pattern Matching
1 отговора
0 прегледа
Pattern Matching
Здравейте!
Трябва ми помо6т за следният проблем:
Имам един TSV Фаил с йерархи4на структура (5 Нива Tree) и искам да екстрахирам структурате с PHP и да го сложа в XML и MySQL.
---------------------------------
Level1 folder date
Level2 folder date
Filename file date
Lelel3 folder date
Filename file date
----------------------------------
Вси4ко по4ва на нов ред и всяко по-долно ниво е с 4 разстояния по навътре.
Думите на всеки ред са разделени с Табулатор.
Пробвам с PREG_MATCH_ALL ама не става.
$r="/^\s{0}(\w+.*?)\t(\w+.*?)\t(\w+.*?)\s{4}(\w+.*?)/sim";
preg_match_all($r,$text,$level);
var_dump($level);
Как мога да сложа вси4ко в Multidimensional Arrays и после директно в XML като се запази структурата?
Благодаря предватително за всякаква помо6т!
Трябва ми помо6т за следният проблем:
Имам един TSV Фаил с йерархи4на структура (5 Нива Tree) и искам да екстрахирам структурате с PHP и да го сложа в XML и MySQL.
---------------------------------
Level1 folder date
Level2 folder date
Filename file date
Lelel3 folder date
Filename file date
----------------------------------
Вси4ко по4ва на нов ред и всяко по-долно ниво е с 4 разстояния по навътре.
Думите на всеки ред са разделени с Табулатор.
Пробвам с PREG_MATCH_ALL ама не става.
$r="/^\s{0}(\w+.*?)\t(\w+.*?)\t(\w+.*?)\s{4}(\w+.*?)/sim";
preg_match_all($r,$text,$level);
var_dump($level);
Как мога да сложа вси4ко в Multidimensional Arrays и после директно в XML като се запази структурата?
Благодаря предватително за всякаква помо6т!
Re: Pattern Matching
Какво означава следното:
Вси4ко по4ва на нов ред и всяко по-долно ниво е с 4 разстояния по навътре.
Най-добре напиши малко примерно съдържание на файл (с \t, и \n, за да не стават грешки)
p.s. Пробвай това
<?php
function array_transform($array)
{
foreach($array as $key => $value)
{
if(!is_array($value))
{
$inc_xml .= "<$key>$value</$key>";
}
else
{
$inc_xml .= "<$key>";
$inc_xml .= array_transform($value);
$inc_xml .= "</$key>";
}
}
return $inc_xml;
}
$lines = file('res.tsv');
foreach ($lines as $line)
{
$tmp_array = explode("\t", $line);
$multi_array[$tmp_array[0]][$tmp_array[1]][$tmp_array[2]][$tmp_array[3]] = $tmp_array[4];
}
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><root>".array_transform($multi_array)."</root>";
echo $xml;
?>
Because finance is numbers
Вси4ко по4ва на нов ред и всяко по-долно ниво е с 4 разстояния по навътре.
Най-добре напиши малко примерно съдържание на файл (с \t, и \n, за да не стават грешки)
p.s. Пробвай това
<?php
function array_transform($array)
{
foreach($array as $key => $value)
{
if(!is_array($value))
{
$inc_xml .= "<$key>$value</$key>";
}
else
{
$inc_xml .= "<$key>";
$inc_xml .= array_transform($value);
$inc_xml .= "</$key>";
}
}
return $inc_xml;
}
$lines = file('res.tsv');
foreach ($lines as $line)
{
$tmp_array = explode("\t", $line);
$multi_array[$tmp_array[0]][$tmp_array[1]][$tmp_array[2]][$tmp_array[3]] = $tmp_array[4];
}
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><root>".array_transform($multi_array)."</root>";
echo $xml;
?>
Because finance is numbers
Редактирано от anastasd на