好的,尝试像这样更改字符串:
[topic]=2[board]=2
要改为返回以下内容:
[topic][board]=2
在上述情况下,我将使用一个等于 [topic]
的字符串变量和另一个等于 [topic]=2[board]=2
的字符串变量
但这需要适用于所有情况... 更多例子如下:
profile[area]=account[u]=1
应该返回这个:
profile[area][u]=1
在上述情况下,我将使用一个等于 profile
的字符串变量和另一个等于 profile[area]=account[u]=1
的字符串变量
再比如:
moderate[area]=groups[sa]=requests
应该是这样的:
moderate[area][sa]=requests
在上述情况下,我将使用一个等于 moderate
的字符串变量和另一个等于 moderate[area]=groups[sa]=requests
的字符串变量
另一个:
[board]=1
应返回:
[board]=1
在上述情况下,我将使用一个等于 [board]
的字符串变量和另一个等于 [board]=1
的字符串变量
基本上,它需要能够做的是仅删除仅第一个和第二个括号的括号之间的文本之间的文本(如果第二个括号仅存在(。 它不应影响任何第三、第四、第五括号。 只有第一个和第二个括号。
有人可以帮我一把吗?
谢谢:)
下面是一个有效的正则表达式:
(?<=])=[^[rn]*(?=[)
http://regexr.com?2vn71
在 PHP 中,该 \r 可能需要更改为 \Z,因为您不会处理换行符,而是处理字符串的末尾。
所以,像这样:
preg_replace("/(?<=])=[^[Z]*(?=[)/", "", $target);
编辑:
以下是此处发生的情况的细分:
(?<-])
确保匹配的表达式之前有一个[
字符
=
匹配=
角色
[^[Z]*
匹配所有字符,直到找到[
或字符串的末尾 ( Z
(
(?=[)
确保匹配的表达式后有一个[
另一个正则表达式,旨在与preg_replace()
一起使用
preg_replace('/^([a-z]+)?([[a-z]+])(.*)([(.*))$/Uis', '$1$2$4', $yourData);