【发布时间】:2012-03-19 13:19:44
【问题描述】:
preg_replace 只是 PHP 中的括号的正确语法是什么?
$search = preg_replace('/\(\)/','',$search);
谢谢
【问题讨论】:
标签: php regex preg-replace pcre
preg_replace 只是 PHP 中的括号的正确语法是什么?
$search = preg_replace('/\(\)/','',$search);
谢谢
【问题讨论】:
标签: php regex preg-replace pcre
你的意思是这样的?
$search = preg_replace('/[()]/', '', $search);
这将删除所有括号而不考虑配对。
【讨论】:
这是我的小实地测试结果:
preg_replace("/\(|\)/", "", $str): 1.590735912323
preg_replace('/[\(\)]/', '', $str): 1.3762638568878
strtr($str, array('(' => '', ')' => '')): 0.84079194068909
str_replace("(", "", str_replace(")", "", $str)): 0.80222821235657
最后两个与 J. Bruni 指出的几乎相同。
【讨论】:
preg_replace('/[\(\)]/', '', $str); - 让我们知道结果。
strtr($str, '()', ' ') -但这不是理想的行为......而且,有几个替换,当然 strtr 会赢! :-)
假设您想从$search 字符串中同时删除( 和):
$search = preg_replace('/\(|\)/','',$search);
我认为最快的方法是使用strtr 函数,如下所示:
$search = strtr($search, array('(' => '', ')' => ''));
【讨论】:
() 它用于导出在这种情况下不需要的模式。
这是正确的语法,虽然 preg_replace 用于正则表达式,但如果你只想替换 (),那么 str_replace 会快几倍。
如果您想替换( 或),无论它们在哪里,您都可以使用
preg_replace("/\(|\)/", "", $str);
【讨论】:
strtr 函数可以一次创建多个“str_replaces”。我在一个基本的模板类中使用它......而不是循环 + str_replace,只是一个 strtr 调用......