求教一个PHP正则表达式的问题。一个字符串形如abcdeXeeeY((XabcYcddX))Xmmdkf((adjjkYxxx)),现在想把包含在(())的内的X和Y分别替换成$和@,用preg函数如何做到呢?
2 回答

慕桂英4014372
TA贡献1871条经验 获得超13个赞
我不是正则表达式的骨灰级大神,我相信很多人也不是。所以我建议,把事情做的简单显然一些,减少很tricky的技巧未尝不是一件好事:$patt='/\(\([^\(\)]*?\)\)/';$subj='abcdeXeeeY((XabcYcddX))Xmmdkf((adjjkYxxx))';echopreg_replace_callback($patt,function($matches){returnstr_replace('Y','@',str_replace('X','$',$matches[0]));},$subj);//abcdeXeeeY(($abc@cdd$))Xmmdkf((adjjk@xxx))注1:匿名函数语法,需要php5.3+的支持。低版本php需要将回调函数按一般函数定义。注2:这个答案并没有考虑双括号组嵌套的情况。
添加回答
举报
0/150
提交
取消