X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Дерево каталогов из файла
gaaarfild
gaaarfild
Topic Starter сообщение 18.11.2010, 4:47; Ответить: gaaarfild
Сообщение #1


Появилась необходимость отпарсить файл и из него составить дерево каталогов, которое будет передаваться плагину для jquery типа treeview.
Как это можно сделать?
Вот файл.Прикрепленный файл  output.txt ( 52,99 килобайт ) Кол-во скачиваний: 107


Заранее спасибо.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.11.2010, 11:53; Ответить: ZiTosS
Сообщение #2


gaaarfild, в каком формате у тебя должны уходить данные в treeview и все ли тебе строчки нужны из файла? Задача не сложная, Получить имя на конце и сосчитать количество слешей, чтобы определить уровень вложенности, я так понимаю. Затем, скорее всего строится XML или что?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 18.11.2010, 20:35; Ответить: gaaarfild
Сообщение #3


Возможно сразу JSON.
Хотя, может и XML. Я, честно говоря, не выбрал еще плагин, так что можно любой, который удобнее, я думаю.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.11.2010, 23:53; Ответить: ZiTosS
Сообщение #4


gaaarfild, ты так и не написал, что нужно получить при парсинге...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 19.11.2010, 17:48; Ответить: gaaarfild
Сообщение #5


Дерево каталогов. =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 20.11.2010, 0:31; Ответить: ZiTosS
Сообщение #6


gaaarfild, ппц, в какой форме, ведь потом же скрипт это должен будет обработать.
Можно сделать примерно так:
[xml]<?xml version="1.0" encoding="UTF-8"?>
<treeview>
<nodes>
<node href="[ссылка]" text="ссылка 1">
<node href="[ссылка]" text="ссылка 1_1" />
<node href="[ссылка]" text="ссылка 1_2" />
</node>
<node href="[ссылка]" text="ссылка 2">
<node href="[ссылка]" text="ссылка 2_1">
<node href="[ссылка]" text="ссылка 2_1_1" />
<node href="[ссылка]" text="ссылка 2_1_2" />
<node href="[ссылка]" text="ссылка 2_1_3">
</node>
<node href="[ссылка]" text="ссылка 2_2" />
</node>
<node>
</nodes>
</treeview>[/xml]
Но ведь ты за основу, как я понял, хочешь взять уже готовый скрипт вывода дерева каталогов... Поэтому и спрашиваю, какой формат данных он имеет. В какой форме их записывать. Это нужно чтобы распарсить и создать нужный формат.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 20.11.2010, 5:22; Ответить: gaaarfild
Сообщение #7


[xml]<root>
<item id="xml_1">
<content><name><![CDATA[Root node 1]]></name></content>
<item id="xml_2">
<content><name><![CDATA[Child node 1]]></name></content>
</item>
</item>
</root>[/xml]

Вот такого типа.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 20.11.2010, 18:16; Ответить: ZiTosS
Сообщение #8


gaaarfild, а где ссылка каждого элемента?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 21.11.2010, 20:56; Ответить: gaaarfild
Сообщение #9


А ссылка не нужна.
Нужно только такую структуру.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 25.11.2010, 20:55; Ответить: ZiTosS
Сообщение #10


gaaarfild, id-шники немного сделал другими, но суть остается та же (если не нужно, можно убрать все \r\n и \t, сделал их для нормального просмотра в исходном коде):
[php]<?php

// функция-обертка создания дерева
function createTree($paths)
{
$tree = array(); // массив (дерево)
// обрабатываем по отдельности каждый путь
foreach($paths as $path)
recursiveCreateTree($tree, $path); // рекурсивно создаём дерево
return $tree; // возвращаем дерево
}

// функция рекурсии создания дерева
function recursiveCreateTree(&$parent, $path, $level = 0)
{
if(!isset($parent[$path[$level]]))
{
$parent[$path[$level]]['name'] = $path[$level];
$parent[$path[$level]]['nodes'] = array();
}

if(isset($path[$level+1]))
recursiveCreateTree($parent[$path[$level]]['nodes'], $path, $level+1);
}

// функция, создающая из дерева XML
function createXML($tree)
{
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$xml .= "<root>";
$xml .= recursiveCreateXML($tree);
$xml .= "</root>";
return $xml;
}

// функция рекурсии, дерево -> XML (создание <item>...</item>)
function recursiveCreateXML($parent, $level=1, $str_id = "xml")
{
$count = 1;
$recursiveXML = "";
foreach($parent as $item)
{
$recursiveXML .= "\r\n". str_repeat("\t", $level) ."<item id=\"{$str_id}{$count}\">";
$recursiveXML .= "\r\n". str_repeat("\t", $level+1) ."<content><name>{$item['name']}</name></content>";
if( count($item['nodes']) )
$recursiveXML .= recursiveCreateXML($item['nodes'], $level+1, $str_id.$count."_");
$recursiveXML .= "\r\n". str_repeat("\t", $level) ."</item>";
$count++;
}
return $recursiveXML;
}

$paths = array(); // массив для занесения URL в формек строк "/catalog1/catalog2/catalog3"
$tmp = array(); // двумерный массив для занесения URL в форме "один_URL => ('catalog1', 'catalog2', 'catalog3')"
$tree = array(); // многомерный массив для занесения дерева (это наше дерево)

$paths = file("paths.txt"); // считываем URL'ы
$paths = str_replace(array("\r\n", "\n"), "", $paths); // очищаем все URL'ы от пробельных символов и символов переноса
$paths = array_unique($paths); // оставляем только уникальные URL'ы

// обрабатываем в цикле URL'ы
foreach($paths as $key => $path)
{
$tmp[$key] = explode("/", $path);
if( $tmp[$key][0] == "" )
array_shift($tmp[$key]); // удаляем первый элемент, если он пустой
}

$tree = createTree($tmp); // создаём дерево каталогов
echo createXML($tree); // создаем из дерева каталогов XML-документ

?>[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКомплексный прогон сайтов, нет каталогов №3 от shtaketo, хороший рост НЧ,СЧ,ВЧ
302 shtaketo 403209 3.11.2023, 23:36
автор: shtaketo
Горячая тема (нет новых ответов) Базы каталогов и форумов сейчас покупают?
36 metvekot 18833 11.10.2023, 6:21
автор: Skyworker
Открытая тема (нет новых ответов) (ищу) База каталогов / трастовых сайтов Украина
1 BigSam 5466 28.9.2020, 20:56
автор: GlazAlmaz
Открытая тема (нет новых ответов) Ссылки с каталогов и профилей
ищу исполнителей
0 adventus 1421 6.5.2019, 19:13
автор: adventus
Открытая тема (нет новых ответов) Нужна база каталогов (Испания)
Каталоги, трастовые сайты и т.д...
5 PRO100SEO 7048 28.9.2018, 11:31
автор: shelovek2017


 



RSS Текстовая версия Сейчас: 23.4.2024, 23:37
Дизайн