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

这是代码:


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

// Replaces closing square, curly, angle brackets with round brackets

$string = preg_replace('/\{\[\</', '(', $string);

$string = preg_replace('/\}\]\>/', ')', $string);

它根本没有替换那个字符串......还有比这更好的编码吗?


谢谢。


素胚勾勒不出你
浏览 209回答 3
3回答

慕标琳琳

这里不需要正则表达式:$string&nbsp;=&nbsp;str_replace(['{','[','<'],&nbsp;'(',&nbsp;str_replace(['}',']','>'],&nbsp;')',&nbsp;$string));或者使用一次调用,strtr但数组会更长。

湖上湖

您可以使用$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) {&nbsp; &nbsp; return !empty($m[1]) ? "(" : ")";&nbsp;}, $string);请参阅此 PHP 演示。该([{[<])模式将开始标点捕获到组 1 ( $m[1]) 中,如果找到匹配项后组不为空,(则返回,否则)替换为。
打开App,查看更多内容
随时随地看视频慕课网APP