我正在寻找的是在不破坏标签的情况下限制输出的东西。假设我有一些内容,例如来自FCK / MCE:
<p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum </p>
<p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem </p>
<p>lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem </p>
现在举例来说,如果我做了类似{{ output|raw[:10] ~ '...' }}
的事情,我会得到:
<p>lorem i...
但我希望得到:
<p>lorem i...</p>
任何想法如何实现这一目标?
答案 0 :(得分:2)
你应该尝试使用twig的扩展来截断Twig&amp;中的文本。 Symfony2中。
您的文字是html,所以首先使用&#34; striptags&#34;过滤然后应用&#34;截断&#34;树枝过滤器。
<p>{{ output|striptags|truncate(50, true) }}</p>
但首先必须启用Twig-Text-Extension,如下所示
$twig->addExtension(new Twig_Extensions_Extension_Text());
或在symfony2
中// app/config/config.yml
services:
twig.extension.text:
class: Twig_Extensions_Extension_Text
tags:
- { name: twig.extension }
以下是截断过滤器的可用选项
1 - 仅截断
<p>{{ output|striptags|truncate(50) }}</p>
2 - 如果要保留整个单词,请设置第二个参数。
<p>{{ output|striptags|truncate(50, true) }}</p>
3 - 如果你想使用你自己的分隔符而不是&#34; ...&#34;设置第三个参数。
<p>{{ output|striptags|truncate(50, true, ".........") }}</p>
有关twig文字扩展名的更多详细信息,请访问http://twig.sensiolabs.org/doc/extensions/text.html
答案 1 :(得分:0)
如果您确定它以<p>
开头并以</p>
结尾,请使用此字段:
{{ output|raw[:10] ~ '...' }}</p>
如果您想在输出中找到并替换某些内容,可以
<p>{{ (output|replace({'<p>': '', '</p>': ''}))|raw[:10] ~ '...' }}</p>