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

Как сделать так, чтобы все значения PHP echo попадали в таблицу HTML

Как управлять браузером без мышки: список горячих клавиш и команд
Web

Как управлять браузером без мышки: список горячих клавиш и команд

Web

Почему Laravel удаляет данные связанной модели по user_id в загруженной функции модели User

Web

Получение разрешения экрана с помощью PHP