|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2023, 10:55 | #1 |
Регистрация: 14.01.2023
Сообщений: 4
|
Разделение на уровни вложенности в PHP
Подскажите, пожалуйста, можно ли разделить на уровни вложенности строку и каждому уровню вложенности задать процент (где между фигурной скобкой и прямой чертой идет значение).
Например, такая строка: { 1 уровень - 1 | 1 уровень - 2 { 2 уровень - 1 | 2 уровень - 2 } } Чтобы в результате получилась строка: { 50%: 1 уровень - 1 | 50%: 1 уровень - 2 { 25%: 2 уровень - 1 | 25%: 2 уровень - 2 } } Примерно по такому принципу. Не только на 2 уровень, но и на более глубокие уровни вложенности. |
17.04.2023, 13:03 | #2 |
Форумчанин
Регистрация: 07.10.2017
Сообщений: 101
|
можно, почему нельзя, надо написать алгоритм
я бы сначала разделил на блоки по вложенности, а потом заново собрал.. |
17.04.2023, 14:13 | #3 |
Регистрация: 14.01.2023
Сообщений: 4
|
Проще говоря, как бы разделить эту строку по "|", но чтобы оно было вне фигурных скобок.
|
17.04.2023, 15:16 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
17.04.2023, 16:22 | #5 | |
Регистрация: 14.01.2023
Сообщений: 4
|
Цитата:
|
|
17.04.2023, 17:22 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Так поделите начала по фигурным скобкам ('{'), потом каждый элемент массива поделите по '}' формируя дерево из вложенных элементов. Потом пройдитесь по дереву и выполните explode по '|'. Для каждого элемента массива добавьте нужный %. Далее implode все можно обратно собрать в строку
|
17.04.2023, 21:13 | #7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Можно применить рекурсию. Заводим счетчик числа скобок, если открывающая, то +1, если закрывающая, то -1. Как только счетчик обнулился, значит вы выдернули последовательность в скобках, при этом все внутренние скобки сохранены. Эту последовательность раскрываем рекурсивно, то есть делаем тоже самое, что описано с самого начала.
E-Mail: arigato.freelance@gmail.com
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавить уровни в существующую структуру | Евгений Таб | Microsoft Office Excel | 0 | 26.05.2017 10:25 |
Уровни отладки | RAFA91 | Общие вопросы C/C++ | 1 | 16.06.2015 23:41 |
уровни в БД | Deniska12 | Помощь студентам | 1 | 21.03.2012 12:08 |
уровни | Deniska12 | PHP | 1 | 21.03.2012 11:56 |
Уровни доступа linux | Hemul | PHP | 0 | 24.08.2011 17:33 |