【发布时间】:2013-07-05 10:45:56
【问题描述】:
我知道preg_replace('/[{}]/', '', $string); 会删除大括号,但如果我也有方括号并且还需要删除它们怎么办?
【问题讨论】:
-
通过适当的转义将它们添加到字符类中
标签: php regex preg-replace
我知道preg_replace('/[{}]/', '', $string); 会删除大括号,但如果我也有方括号并且还需要删除它们怎么办?
【问题讨论】:
标签: php regex preg-replace
为什么要为此使用正则表达式。如果您所做的只是替换字符串中的 4 个字符:
str_replace(array('[',']','{','}'),'',$string);
会做同样的事情。
【讨论】:
preg_replace('/[{}\[\]]/', '', $string);
您应该将它们添加到正则表达式中的类中,并进行适当的转义
$string = 'asdf{[]a]}ds';
echo preg_replace('/[{}\[\]]/', '', $string);
输出:asdfads
【讨论】:
当您正在寻找方括号删除时:
$str = preg_replace("/\[([^\[\]]++|(?R))*+\]/", "", $str);
这将转换为:
This [text [more text]] is cool
到这里:
This is cool
编辑
$string = '<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>';
$new_string = preg_replace('/\[\[.*?\]\]/', '<b>img inserted</b>', $string);
echo $new_string;
如果我能进一步帮助您,请告诉我。
【讨论】:
你必须逃避它:
/[{}[\]]/
【讨论】:
在字符类中包含方括号(转义):/[{}\[\]]/
【讨论】:
[的开场白 - 但这只是吹毛求疵
[ 留在 charclass 中不转义。至于我,如果两个括号都以相同的方式转义(恕我直言),则正则表达式更具可读性。 It is always safe to precede a non-alphanumeric with "\" to specify that it stands for itself