Web

Регулярное выражение с атрибутами шорткодов Wordpress

У нас есть следующие шорткоды: 

[show_portfolio get="yachts" for="sale" in="europe" sort="length_overall" by="asc" page="1" perpage="18" theme="active-71" ref="http://replaceme.com" debug="true" engine="engine.com"]

 

[get_portfolio get="yachts" for="sale" in="europe" sort="length_overall" by="asc" page="1" perpage="18" theme="active-71" ref="http://replaceme.com" debug="true" engine="engine.com"]

 

Надо заменить http://replaceme.com на http://targetadress.com.

Замена следующим регексом не является хорошей идеей, потому что он также меняет теги href ref="[^"\r\n]*"

https://regex101.com/r/q1uumb/1/

Я хотел бы узнать, может ли кто-нибудь помочь мне заменить http://replaceme.com на http://targetadress.com внутри тегов (show|get)_portfolio.

Я не смог найти способ выполнить следующий regex \[(show|get)_portfolio ref=""(.+)"].

 

Ответ 1

Можно использовать:

$repl = preg_replace(

   '\[(?:show|get)_portfolio\s+[^]]* ref="\Khttp://replaceme\.com"',

   'http://targetadress.com"',

   $str);

 

Детали RegEx:

  • \[: cопоставить c [

  • (?:show|get)_portfolio: cоответствие для get_portfolioилиshow_portfolio

  • \s+: соответствие для 1+ пробелов

  • [^]]*\s+ref=": соответствует 0 или более  ] символов, за которыми следует 1+ пробелов, за которым следует ref=

  • \K: сбросить информацию о выборке

  • http://replaceme\.com": L выборка  http://replaceme\.com"

Схожие статьи

Web

Извлечение данных из JSON с помощью PHP

Какой выбрать CDN для сайта. Оптимизируем скорость загрузки
Web

Какой выбрать CDN для сайта. Оптимизируем скорость загрузки

Web

Использование JQuery Ajax для получения данных из Mysql

Web

Как получить первый элемент массива в PHP