Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено] vqmod regex


Рекомендованные сообщения

Всем привет. Столкнулся с проблемой в регулярках для vqmod. Я пытаюсь в некий файл для определенного if дописать свое условие, но регулярка никак не хочет искать в многострочном режиме.

if ($module['layout_id'] == $layout_id && $module['position'] == 'content_top' && $module['status']){
     $module_data[] = array(
	'code'       => $extension['code'],
	'setting'    => $module,
	'sort_order' => $module['sort_order']
     );				
}

мне надо дописать обычный else после этого участка. 

Пишу регулярку которая ищет участок 

if ($module['layout_id']

и дальше пропускает все символы до } 

#if\s*\(\s*\$module\['layout_id'\].*?\}#

Но она никогда не срабатывает, если в эту же строку дописать "// }", то все сработает. Получается что vqmod не хочет работать в многострочном режиме?

Ключи ставил для регулярки. не помогает. Пока что решил вопрос вставим код до if, но хочется найти решение по регулярке.

Есть у кого-нибудь решение данной задачи? 

Ссылка на комментарий
Поделиться на других сайтах

Replace для всей строки if не подходит ?

что-то типа search for 

if ($module['layout_id'] == $layout_id && $module['position'] == 'content_top' && $module['status'])

replace

if ($my_var == SOME_VAL && $module['layout_id'] == $layout_id && $module['position'] == 'content_top' && $module['status'])
Ссылка на комментарий
Поделиться на других сайтах

К сожалению нет. там тожет быть много чего навешано. Мне надо именно после этой проверки вставить свою.

Хотя может как вариант вставить просто перед скобкой ) -> || mycode )

Ссылка на комментарий
Поделиться на других сайтах

regex в vqmod это зло, даже сами разработчики крайне не рекомендуют это использовать.

Ссылка на комментарий
Поделиться на других сайтах

regex в vqmod это зло, даже сами разработчики крайне не рекомендуют это использовать.

Ну не знаю, когда надо вставить код, и есть вероятность того что кто-то его отформатировал, добавил пробел, или ещё что-то, то регепс очень даже хорош. 

Ссылка на комментарий
Поделиться на других сайтах

Ну не знаю, когда надо вставить код, и есть вероятность того что кто-то его отформатировал, добавил пробел, или ещё что-то, то регепс очень даже хорош.

а вы думаете, что кроме вашего модуля больше никаках модулей установлено не будет?

обычно на среднем сайте установлено несколько десятков модулей, многие используют vqmod

и чем больше в vqmod замен или регулярок тем больше вероятность конфликтов.

Ссылка на комментарий
Поделиться на других сайтах

а вы думаете, что кроме вашего модуля больше никаках модулей установлено не будет?

обычно на среднем сайте установлено несколько десятков модулей, многие используют vqmod

и чем больше в vqmod замен или регулярок тем больше вероятность конфликтов.

Я понимаю это прекрасно. Но причем здесь это к моему вопросу?

Ссылка на комментарий
Поделиться на других сайтах

Все поиски и замены в vqmod работают только в пределах одной строки т.к. vqmod обрабатывает редактируемые файлы построчно. Если Вам нужно сделать как в варианте ниже:

if ($my_var == SOME_VAL && $module['layout_id'] == $layout_id && $module['position'] == 'content_top' && $module['status'])

то используйте обычный поиск + обычный replace без регулярок и всего прочего.

 

Либо напишите сюда начальный вариант и какой должен быть конечный, а то не совсем понятно что и куда нужно вставить.  

Ссылка на комментарий
Поделиться на других сайтах

Все поиски и замены в vqmod работают только в пределах одной строки т.к. vqmod обрабатывает редактируемые файлы построчно. 

Вот это я и хотел узнать. Спасибо. 

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.