интересуют комментарии там где в конце строки есть //1
и ещё, чем занимает массив(?) refs
- Код: Выделить всё
<?php
$text = "somefunc1
\tsub1
\tsub2
\tsub3
\t\tsubtext1
\t\tsubtext2
somefunc2
\tcoolstr1
\t\tcool1
\tcoolstr2
somefunc3";
$target = array();
$refs = array(&$target); //1
//заменяем текст
$text = str_replace(array("\r\n", "\n\r"), array("\n", "\n"), $text);
// разбиваем строку на подстроки, в качестве разделителя \n
foreach(explode("\n", $text) as $str) {
if (($val = trim($str)) === '') continue; //1
$level = 0;
while (substr($str, $level++, 1) === "\t"); //вернуть подстроку строки str налало в level++ 1 символ
while ($level < count($refs)-1) {
array_pop($refs); //извлеч последний элемент массива
}
if ($level >= count($refs)) {
$refs[count($refs)-1][$val] = array(); //1
array_push($refs, &$refs[count($refs)-1][$val]); //добавить элемент в конец массива
} else {
$refs[count($refs)-2][$val] = array(); //1
$refs[count($refs)-1] = &$refs[count($refs)-2][$val];//1
}
?>
код разбирает "дерево" и записывает его в массив