我需要删除括号和中间的所有内容:
$url = 'abc[wenn]';
echo preg_replace('/'[(.)']/i','',$url);
我的正则表达式有什么不正确的地方?
您需要星号*
或+
量词才能工作:
/'[.*?']/i
如果没有它,(.)
将只匹配单个字符。
更好的是,如果[
和]
之间的值不能包含]
本身,则可以使用更强大的表达式:
/'[[^']]+']
您没有设置限定符,因此匹配失败,字符串被重复。您还使用了i
修饰符(不区分大小写),它在这种情况下是无用的,可以删除。
下面的量词是公认的。
* Match 0 or more times
+ Match 1 or more times
以下将是您正在寻找的方法。
preg_replace('/'[[^']]*']/', '', $url);
正则表达式:
'[ '['
[^']]* any character except: '']' (0 or more times)
'] ']'
如果您有要删除的嵌套括号,abc[foo[bar[baz]]]
您可以使用以下内容:
preg_replace('/'[(?:[^'[']]|(?R))*']/', '', $url);