Php 如何在细枝/木材过滤器中使用正则表达式?

Php 如何在细枝/木材过滤器中使用正则表达式?,php,regex,twig,timber,Php,Regex,Twig,Timber,我正在尝试使用preg\u replace和正则表达式从使用细枝过滤器的细枝v2模板的文本输出中删除括号[和],以及括号内的所有字符 细枝输出的内容示例如下 内容的一个例子是[caption id=“attachment_4487” align=“alignright”width=“500”]Lorem Ipsum标题废话 废话[/caption]和更多内容 我想删除[和]括号内的所有内容,留下Lorem Ipsum标题废话,以及内容示例是,等等 现在的问题是,当使用过滤器时,我根本看不到任何内

我正在尝试使用
preg\u replace
和正则表达式从使用细枝过滤器的细枝v2模板的文本输出中删除括号
[
]
,以及括号内的所有字符

细枝输出的内容示例如下

内容的一个例子是[caption id=“attachment_4487” align=“alignright”width=“500”]Lorem Ipsum标题废话 废话[/caption]和更多内容

我想删除
[
]
括号内的所有内容,留下
Lorem Ipsum标题废话,以及
内容示例是
,等等

现在的问题是,当使用过滤器时,我根本看不到任何内容。问题可能是树枝的过滤器结构;但是我在日志中没有发现错误。我已经在测试了正则表达式,但这可能仍然是个问题

现有的细枝过滤器去除html,但不去除括号

这是functions.php中的筛选函数:

add_filter('timber/twig', function($twig) {
   $twig->addExtension(new Twig_Extension_StringLoader());

   $twig->addFilter(
     new Twig_SimpleFilter(
       'strip_square_brackets', 

        function($string) {

            $string = preg_replace('\[.*?\]', '', $string);
            return $string;
}

 )
   );

   return $twig;
});
该过滤器在template.twig文件中称为标准方式:


{{content | strip_square _方括号}

问题在于替换的是
字符串
,而不是
正则表达式
。那根绳子当然不相配

您的正则表达式行应该如下所示:

$string = preg_replace(/\[.*?\]/, '', $string);
现在,您将用空字符串替换正则表达式匹配

奖金编辑

您的奖金问题的答案是:

/\[.*?\].*\[.*?\]/
基本上,它只是双倍的比赛和比赛之间的一切

如果您总是使用
“caption”
,则另一种方法更可靠:

/\[caption.*/caption\]/

这不应该是:$string=preg_replace(/[.*?]/,“”,$string);?好吧,这很简单:)分隔符也是如此,
/
还是它们逃逸了``?一个正则表达式必须被两个'/'包围在许多正则表达式风格中,字符串被引号包围;我显然在学习这些东西。作为奖励(!),正则表达式如何同时删除括号对之间的所有内容,即删除此文本[/caption]
/[cap.*tion]/@PoulBak,很好!那很好用。还有[]的其他实例不使用标题,因此将匹配项加倍的正则表达式将起作用。谢谢