带有 wordpress 简码属性的正则表达式

Regular Expression with wordpress shortcodes attributes

我们有以下简码,

[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 with http://targetadress.com

用以下正则表达式替换不是好主意,因为它也会捕获 href 标签 ref="[^"\r\n]*"

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

我想知道是否有人帮我替换 (show|get)_portfolio tags

中的 http://replaceme.com with http://targetadress.com

我找不到 运行 遵循正则表达式 \[(show|get)_portfolio ref="(.+)"]

的方法

提前致谢

您可以使用:

$repl = preg_replace(
   '\[(?:show|get)_portfolio\s+[^]]* ref="\Khttp://replaceme\.com"',
   'http://targetadress.com"',
   $str);

如果你想匹配 ref= 中的任何 URL 然后使用:

$repl = preg_replace(
   '\[(?:show|get)_portfolio\s+[^]]*\s+ref="\K[^"]+"',
   'http://targetadress.com"',
   $str);

RegEx Demo

正则表达式详细信息:

  • \[:匹配一个[
  • (?:show|get)_portfolio:匹配get_portfolioshow_portfolio
  • \s+:匹配 1+ 个空格
  • [^]]*\s+ref=":匹配 0 个或多个非 ] 字符后跟 1+ 个空格后跟 ref=
  • \K: 重置匹配信息
  • http://replaceme\.com":L匹配http://replaceme\.com"