Django的树枝中的截断词

时间:2019-04-06 13:33:32

标签: php django symfony twig

Django有一个名为truncatewordstruncatewords_html的过滤器,即Truncates a string after a certain number of words.是否具有类似的功能/在树枝上实现相同功能的最佳方法是什么? )。

细枝切片功能不是我想要的,因为它不尊重空格/单词。

1 个答案:

答案 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标记结构并仅截断其中的单词,但是至少您有一个起点。