![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
Доброго всем времени суток! И снова у меня проблема с составлением регулярки, прошу помощи.
Имеется текст вида:
Таким образом получается: - в разделе 1 - один подраздел - в разделе 2 - три - в разделе 3 - ни одного - в разделе 4 - два Нужно имеющийся текст распарсить. Я смог выцепить только разделы, но соотнести к ним подразделы не получилось.
Есть пока только одна мысль - использовать PREG_OFFSET_CAPTURE и вырезать нужные строки ф-цией substr() |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
В итоге я сделал как и думал через PREG_OFFSET_CAPTURE:
Может быть у кого-нибудь появится более изящное решение? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
логика в том, что разделы - в кавычками, а подразделы - без?
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
Не совсем. Тут учитывать стоит вложенность.
То есть сперва идет в кавычках название раздела, а все что после него и до следующего - это содержание раздела. Я точно знаю, что это можно распарсить одной регуляркой. Я думаю что примерно так: ("раздел")\n(все остальное, кроме кавычки) и второй карман потом просто explode( "\n" ) |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
Ни у кого нет мыслей?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
разбить на строки и перебирать в цикле.
в отдельной переменной хранить имя текущего раздела. когда встречается строка в кавычках, записывать название в переменную "текущий раздел". если строка без кавычек, то трактуем как подраздел и связываем подраздел с разделом, указанном в переменной "текущий раздел". |
|||
|
||||
| unicross |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 5 Всего: 53 |
Результат
|
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |