为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用正则表达式替换圆括号的任何括号?

如何使用正则表达式替换圆括号的任何括号?

PHP
素胚勾勒不出你 2021-08-27 09:47:34
这是代码:$string="{1},[2],(3),<4>";// Replaces closing square, curly, angle brackets with round brackets$string = preg_replace('/\{\[\</', '(', $string);$string = preg_replace('/\}\]\>/', ')', $string);它根本没有替换那个字符串......还有比这更好的编码吗?谢谢。
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

这里不需要正则表达式:

$string = str_replace(['{','[','<'], '(', str_replace(['}',']','>'], ')', $string));

或者使用一次调用,strtr但数组会更长。


查看完整回答
反对 回复 2021-08-27
?
湖上湖

TA贡献2003条经验 获得超2个赞

您可以使用


$string="{1},[2],(3),<4>";

$what = ['~[{[<]~', '~[]}>]~'];

$with = ['(', ')'];

$string = preg_replace($what, $with, $string);

echo $string;

这里,


[{[<]-匹配三个字符之一的字符类:{, [或<

[]}>]- 匹配三个字符之一:], }or >(注意,]当它是类中的第一个字符时,字符类内部不必转义)。

请参阅PHP 演示。


您也可以使用单个调用preg_replace_callback:


$string = preg_replace_callback('~([{[<])|[]}>]~', function ($m) {

    return !empty($m[1]) ? "(" : ")";

 }, $string);

请参阅此 PHP 演示。


该([{[<])模式将开始标点捕获到组 1 ( $m[1]) 中,如果找到匹配项后组不为空,(则返回,否则)替换为。


查看完整回答
反对 回复 2021-08-27
  • 3 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信