代码之家  ›  专栏  ›  技术社区  ›  BlueDogRanch

如何在细枝/木材过滤器中使用RegEx?

  •  1
  • BlueDogRanch  · 技术社区  · 6 年前

    我试着用 preg_replace 一个正则表达式来移除括号 [ ] 以及使用细枝过滤器从twigv2模板的文本输出中获取其中的所有字符。

    内容示例是[caption id=“附件\u 4487” align=“alignright”width=“500”]Lorem Ipsum字幕 还有更多的内容。

    我想把里面的东西都搬走 [ ] 支架,离开 Lorem Ipsum caption blah blah ,以及 An example of content is

    问题是,现在,我没有得到任何内容显示时,过滤器被使用。问题可能是细枝的过滤结构;但我在日志中没有发现错误。我已经测试过正则表达式了 https://regex101.com/r/sN5hYk/1 但这仍然是个问题。

    https://twig.symfony.com/doc/2.x/filters/striptags.html 去掉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_brackets }}

    1 回复  |  直到 6 年前
        1
  •  2
  •   Poul Bak    6 年前

    string ,不是 regex . 那根线当然不匹配。

    你的正则表达式应该是这样的:

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

    使用空字符串。

    奖金编辑 :

    你奖金问题的答案是:

    /\[.*?\].*\[.*?\]/
    

    基本上它只是双倍的比赛和比赛之间的一切。

    如果你总是使用 'caption' :

    /\[caption.*/caption\]/