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
та еще зажигалка...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы