用php正则表达式替换方括号之间的子字符串

这是我正在使用的子字符串

[sitetree_link%20id=2]

我需要用空格替换[]之间所有出现的事件.但显然如果有[]括号之外,请不要管它们……

我现在正在学习正则表达式,但这个看起来很难.有人为此获得了超级聪明的正则表达式吗?

谢谢 :)

解决方法:

你可以试试这个

$result = preg_replace('/(\[[^]]*?)(%20)([^]]*?\])/m', '$1 $3', $subject);

说明

(          # Match the regular expression below and capture its match into backreference number 1
   \[         # Match the character “[” literally
   [^]]       # Match any character that is NOT a “]”
      *?         # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
)
(          # Match the regular expression below and capture its match into backreference number 2
   %20        # Match the characters “%20” literally
)
(          # Match the regular expression below and capture its match into backreference number 3
   [^]]       # Match any character that is NOT a “]”
      *?         # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
   \]         # Match the character “]” literally
)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...