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,很好!那很好用。还有[]的其他实例不使用标题,因此将匹配项加倍的正则表达式将起作用。谢谢