![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| patap |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
помогите составить выражение
есть код
нужно заменить все { - на {ldelim} } - на {rdelim} конструкции типа {t pref="p"}asdfasd{/t} должны остаться в исходном виде. т.е на выходе нужно получить:
хотя бы на мысль натолкните -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||
|
|||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
find: {([^t])([^{]+)([^t])}
replace: {ldelim}$1$2$3{rdelim} не вполне то (не будет заменять любые теги, начинающиеся и заканчивающиеся на t), но в данном случае кажется работоспособным Это сообщение отредактировал(а) baldina - 11.12.2012, 14:12 |
|||
|
||||
| patap |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
да. немного не то...
я сейчас смотрю в сторону позитивного/негативного просмотра вперед/назад вот написал
но оно в данном случае не хавает одиночно стоящую } function foo() { } Добавлено через 3 минуты и 43 секунды вот пока что полуподходящее
это выгребет все { после которых нет {t теперь надо для закрывающих скобок -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||
|
|||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
думаю так точнее:
Добавлено @ 14:27 если возможны одинокие скобки, то их замена должна независимо проводиться. это уже более чем одна замена, одним выражением не получится. Добавлено @ 14:31 а что касается
заменяется нормально (при глобальной а не построчной замене, естественно): скобки успешно сопоставляются с выражением. нужно, что бы между скобками было минимум 2 символа. можно сократить для одного, если заменить [^{]+ на [^{]* Это сообщение отредактировал(а) baldina - 11.12.2012, 14:33 |
||||||
|
|||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
1. поставить третий Смарти. там не требуется морочиться с {rdelim}/{ldelim}.
2. я так понимаю, у тебя введенный через WYSIWYG текст сохраняется и используется как Смарти-шаблон? тогда не давать писать джаваскрипт непосредственно в шаблон. это в любом случае не хорошо. а здесь — еще и веселье с экранированием получается. пускай будет список макросов — предопределенных джаваскрипт блоков(типа {jquery-plugin name="autocomplete" target="#id1"}, который развернется в jQuery('#id1').autocomplete();) |
|||
|
||||
| patap |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
baldina, спасибо. помогло, только добавил чтобы не хавало все что с t начинается
skyboy, тут совершенно не очевиден контекст ситуации. Это временное решение проблемы, мне нужно обработать смарти только {t}...{/t} (это плагин переводы подставит) остальное потом должно быть обработано со всеми смарти конструкциями почему так? - так повелось, позже будет сделано по другому) т.е к примеру: шаг 1
шаг 2 делаем реплейсы
шаг 3 прогоняем через смарти
шаг 4 сохранить шаблон. -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
блин, начал тестить. может быть такая конструкция - ее обрабатывает не верно..
{*{$foo}*} Добавлено через 10 минут и 56 секунд в общем мне нужно эту скобку не учитывать при просмотре вперед или назад... именно ее не могу учесть {t prefix="lp"}api_confirm_text2{/t} -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
отрицание строки, насколько понимаю, можно сделать только просмотром, типа такого:
Добавлено через 22 секунды
|
||||
|
|||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
тот же еффект
обработает как {ldelim}*{$foo{rdelim}*} -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
имхо проще сделать двумя поисками/заменами
|
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
с помощь коллбека получилось
-------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
Что-то мне подсказывает, что анонимная функция будет быстрее, чем create_function.
|
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
Aliance, пхп не то у нас еще)
-------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |