gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:14:11 25 4
gpt4 key购买 nike

Symfony1有一个名为auto_link_text()的帮助程序函数,该函数解析文本块并将所有文本URL包裹在<a>标记中,从而自动填充href属性。

Twig是否包括这样的功能?我查看了Google,并仔细阅读了代码,但找不到。我显然可以自己编写一个代码,但是不想复制某些东西(如果已有的话)。

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

最佳答案

该功能在twig中不存在,但是您甚至可以将自己的扩展添加到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;
}
}

关于symfony - Twig是否包括用于自动链接文本的过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com