![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| RBlake |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
Приветствую всех.
Пишу шаблонизатор, написал уже почти всё но не могу реализовать главного — условия, а именно вложения условий… такой ступор полнейший. Решил использовать регулярные выражения. Получилось вот что…
Выходит что действие было абсолютно бесполезным, т.е. на выходе я получил то, что и имел изначально… Натолкните, пожалуйста, на мысль, как обрабатывать внутренний блок условий (<?if($test2)?>2<?else?>3<?endif?>) отдельно от внешнего… PS: Шаблонизатор использую для того, чтоб запретить использовать php в шаблонах. |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Жадность у регулярок надо регулировать.
писать .*? вместо простого .*
Или так
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| RBlake |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
ksnk, тогда обрежется вот так
<?if(1==2)?><?if(1==2)?>1<?else?>2<?endif?><?else?>2<?endif?> Или я что-то не так понял?… |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
В принципе, регулярки могут позволить выбрать такое из строки. Нужно долго курить "рекурсивные регулярные выражения" и медитировать для просветления. Вот один из результатов такого просветления.
Хотя, чтобы понимать, что там происходит, да и для быстроты выполнения, можно разделить входящую строку на кусочки (<if> <then> <else>...) и анализировать их последовательным перебором. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |