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

preg\U replace从最后匹配的元素中移除所有元素

  •  1
  • Lovelock  · 技术社区  · 8 年前

    处理继承的WordPress主题时,客户端报告了一些链接的问题。

    如果用户添加了3个(示例)链接:

    <p><a href="#">Where to Invest</a></p>
    <p><a href="#">Where to Invest 2</a></p>
    <p><a href="#">Where to Invest 3</a></p>
    

    页面上只显示了最后一个,通过查看代码,我可以看到内容是通过向锚定链接添加类的函数进行解析的:

    function style_content_call_to_action($content, $size='large'){
        $content = preg_replace('/<p><a.*href="(.*)">(.*)<\/a><\/p>/si', '<p><a href="$1" class="object button '.$size.'">$2</a></p>', $content);
        return $content;
    }
    

    有没有什么方法可以调整它,使其适用于所有按钮?除了最后一个,没有删除所有内容?

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   RomanPerekhrest    8 年前

    您需要调整您的正则表达式模式以使其精确,而不是使用 (.*) :

    '/<p><a.*href="([^">]*)">([^<>]*)<\/a><\/p>/i'
    
    推荐文章