c_basso
@c_basso
Мне нравится кодить

Как распарсить отформатированный текст в дерево на PHP?

Есть примерно такой текст:
Категория1
[tab]Подкатегория1
[tab]Подкатегория2
[tab][tab]ПодПодкатегория1
[tab][tab]ПодПодкатегория2
[tab][tab][tab]ПодПодПодкатегория1
[tab]Подкатегория3
Категория2
[tab]Подкатегория4

[tab] - знак табуляции.
Подскажите пожалуйста алгоритм, как на PHP превратить это в
[
	[
		'name' => 'Категория1',
		'children' => [
			[
				'name' => 'Подкатегория1',
				'children' => []
			],
			[
				'name' => 'Подкатегория2',
				'children' => [
					[
						'name' => 'ПодПодкатегория1',
						'children' => []
					],
					[
						'name' => 'ПодПодкатегория2',
						'children' => [
							[
								'name' => 'ПодПодПодкатегория1',
								'children' => []
							]
						]
					]
				]
			]
		]
	],
	[
		'name' => 'Категория2',
		'children' => [
			[
				'name' => 'Подкатегория4',
				'children' => []
			]
		]
	]
]

почему-то не сохраняется форматирование кода.
  • Вопрос задан
  • 2316 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Решение в лоб - считаем уровень по количеству отступов и рекурсивно обходим список. Как-то так:
ideone.com/u7xAv9
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
27 апр. 2024, в 19:58
2500 руб./в час
27 апр. 2024, в 19:48
10000 руб./за проект