У нас есть следующие шорткоды:
[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