PHP - 非常快速地更改字符串

时间:2012-01-13 01:56:10

标签: php string string-formatting

好的,尝试更改字符串,如下所示:

[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的字符串变量

基本上,它需要能够做的是除去仅在第一个和第二个括号的括号之间的文本之间的文本(如果仅存在第二个括号)。它不应该影响任何第三,第四,第五支架。只有第一个和第二个括号。

有人可以帮我一把吗?

谢谢:)

2 个答案:

答案 0 :(得分:2)

这是一个有效的正则表达式:

(?<=\])\=[^\[\r\n]*(?=\[)

http://regexr.com?2vn71

那个\ r \ n可能需要在PHP中更改为\ Z,因为你不会处理换行符,而是处理字符串的结尾。

所以,比如:

preg_replace("/(?<=\])\=[^\[\Z]*(?=\[)/", "", $target);

修改

以下是对此处发生的情况的细分:

(?<-\])确保在匹配的表达式

之前有[个字符

\=匹配=个字符

[^\[\Z]*匹配所有字符,直到找到[或字符串的结尾(\Z

(?=\[)确保匹配的表达式

后面有[

答案 1 :(得分:0)

另一个正则表达式,旨在与preg_replace()

一起使用
preg_replace('/^([a-z]+)?(\[[a-z]+\])(.*)(\[(.*))$/Uis', '$1$2$4', $yourData);