Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] vqmod regex


Recommended Posts

Всем привет. Столкнулся с проблемой в регулярках для 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 обрабатывает редактируемые файлы построчно. 

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.