Django有一个名为truncatewords
和truncatewords_html
的过滤器,即Truncates a string after a certain number of words.是否具有类似的功能/在树枝上实现相同功能的最佳方法是什么? )。
细枝切片功能不是我想要的,因为它不尊重空格/单词。
答案 0 :(得分:1)
您可以创建一个custom Twig Filter,它将使用正则表达式来获取您想要的内容:
paym
class TruncateWordsExtension extends AbstractExtension
{
public function getFilters()
{
return [
new TwigFilter('truncatewords', [$this, 'truncateWords']),
];
}
public function truncateWords($text, $maxWords)
{
$regex = '/((\w+)[\W\s]+){0,' . ($maxWords - 1) . '}(\w+)/';
preg_match($regex, $text, $matches);
return $matches[0] ?? '';
}
}
可能要复杂一点,假设您想保留HTML标记结构并仅截断其中的单词,但是至少您有一个起点。