Перейти к содержанию
Webracer

Поиск по регулярным выражениям

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

При написании xml-файла для vQmod, столкнулся с необходимостью замены части кода, который содержит несколько строк, пробелы. Как в этом случае нужно задать поиск?

<search position="replace"><![CDATA[]]></search>

Как вариан воспользоваться регулярными выражениями, только не могу никак в этом разобраться. Может кто подскажет. Вот код который нужно найти и заменить:

<!-- AddThis Button BEGIN -->
          <div class="addthis_default_style"><a class="addthis_button_compact"><?php echo $text_share; ?></a> <a class="addthis_button_email"></a><a class="addthis_button_print"></a> <a class="addthis_button_facebook"></a> <a class="addthis_button_twitter"></a></div>
          <script type="text/javascript" src="//s7.addthis.com/js/250/addthis_widget.js"></script>
          <!-- AddThis Button END -->

Поделиться сообщением


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

Достаточно просто скопировать целиком этот кусок кода и вставить в CDATA, если в шаблоне никто там лишних переносов не делал, то должно заменить, а чтобы уж наверняка - можно заменить 

<!-- AddThis Button BEGIN -->

на

<!-- AddThis Button BEGIN 

и

<!-- AddThis Button END -->

на

 AddThis Button END -->

первое, что пришло в голову :)

Поделиться сообщением


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

Полностью кусок кода я пробовал вставлять, но не получается ничего.

А ваш пример я не понял :(

Поделиться сообщением


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

У самого аналогичная проблема, а авторов модов все работает, а я пытаюсь вставить несколько строк - не видит.

 

А пример человек показал "интересный" = сломать код.

Поделиться сообщением


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

Почему сломать? Это называется закомментировать, почему это лучше удаления или замены ненужных строк - в случае конфликтов с другими вкмодами вы сможете открыть исходный код страницы и увидеть суть проблемы

Поделиться сообщением


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

При написании xml-файла для vQmod, столкнулся с необходимостью замены части кода, который содержит несколько строк, пробелы. Как в этом случае нужно задать поиск?

<search position="replace"><![CDATA[]]></search>

Как вариан воспользоваться регулярными выражениями, только не могу никак в этом разобраться. Может кто подскажет. Вот код который нужно найти и заменить:

<!-- AddThis Button BEGIN -->
          <div class="addthis_default_style"><a class="addthis_button_compact"><?php echo $text_share; ?></a> <a class="addthis_button_email"></a><a class="addthis_button_print"></a> <a class="addthis_button_facebook"></a> <a class="addthis_button_twitter"></a></div>
          <script type="text/javascript" src="//s7.addthis.com/js/250/addthis_widget.js"></script>
          <!-- AddThis Button END -->

 

Для этого нужно указать в поиске первую строку фрагмента и добавить атрибут offset со значением количества дополнительных строк:

...
<operation info="Multi-line Replace">
  <search position="replace" offset="3"><![CDATA[
    <!-- AddThis Button BEGIN -->
    ]]></search>
  <add><![CDATA[]]></add>
</operation>
...

См. пример на офф. сайте https://code.google.com/p/vqmod/wiki/Examples.

  • +1 1

Поделиться сообщением


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

vetalreal, спасибо за подсказку!

Нигде в мануалах не встречал опции offset. Так и думал, что есть что-то подобное, так как без неё как-то всё непродуманно выглядело.

Ещё раз спасибо!

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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