用php删除不同括号内的内容

时间:2013-02-03 14:59:14

标签: php regex

我想知道如何在php中使用regexp删除一组括号和括号本身之间的文本,这些问题可能会有所不同......例如:

[为myContent}

(为myContent]

{为myContent)

依旧......

我试过了:

preg_replace("/\{.*\}/", " ", $title);
preg_replace("/\[.*\]/", " ", $title);
preg_replace("/\(.*\)/", " ", $title);

但这只是删除相同的括号..是的括号可以嵌套到二年级..

2 个答案:

答案 0 :(得分:1)

您需要使用[]设置字符集并使用()保留字符集;

print preg_replace("~([\[\{\(]).*?([\]\}\)])~", "\\1...\\2", 
        "[mycontent} a (mycontent] b {mycontent)");

输出:[...} a (...] b {...)

答案 1 :(得分:0)

$title = "[mycontent}outside(mycontent]outside{mycontent)";

$find = array(
    "/\{.*?\}/",
    "/\{.*?\]/",
    "/\{.*?\)/",
    "/\[.*?\}/",
    "/\[.*?\]/",
    "/\[.*?\)/",
    "/\(.*?\}/",
    "/\(.*?\]/",
    "/\(.*?\)/"
);
$replace = array(
    " ",
    " ",
    " ",
    " ",
    " ",
    " ",
    " ",
    " ",
    " "
);
$string = preg_replace($find, $replace, $title);

var_dump($string); // prints string(17) " outside outside "