Twig是否包含用于自动链接文本的过滤器?

Dan*_*ows 9 symfony twig

Symfony1有一个名为的辅助函数auto_link_text(),它解析了一个文本块并将所有文本URL包装在<a>标签中,自动填充该href属性.

Twig是否包含这样的功能?我查看了Google,并查看了代码,但找不到代码.我显然可以自己编写代码,但如果它已经存在则不想复制某些内容.

如果我自己编写代码,它应该是函数还是过滤器?

a.a*_*dad 15

该功能在树枝中不存在,但您甚至可以将自己的扩展添加到Twig:

class AutoLinkTwigExtension extends \Twig_Extension
{

    public function getFilters()
    {
        return array('auto_link_text' => new \Twig_Filter_Method($this, 'auto_link_text', array('is_safe' => array('html'))),
        );
    }

    public function getName()
    {
        return "auto_link_twig_extension";
    }

    static public function auto_link_text($string)
    {

        $regexp = "/(<a.*?>)?(https?)?(:\/\/)?(\w+\.)?(\w+)\.(\w+)(<\/a.*?>)?/i";
        $anchorMarkup = "<a href=\"%s://%s\" target=\"_blank\" >%s</a>";

        preg_match_all($regexp, $string, $matches, \PREG_SET_ORDER);

        foreach ($matches as $match) {
            if (empty($match[1]) && empty($match[7])) {
                $http = $match[2]?$match[2]:'http';
                $replace = sprintf($anchorMarkup, $http, $match[0], $match[0]);
                $string = str_replace($match[0], $replace, $string);
            }
        }

        return $string;
    }
}
Run Code Online (Sandbox Code Playgroud)


Khe*_*pin 10

如果您在Symfony2中使用twig,那么就有一个包:https://github.com/liip/LiipUrlAutoConverterBundle

如果你在Symfony2之外使用它,你可以向他们提交一个PR,以便分离捆绑和枝条扩展!