Php 用于缩短文本的细枝扩展?
我要寻找的是在不破坏标记的情况下限制输出的东西。比如说,我有一些来自FCK/MCE的内容:Php 用于缩短文本的细枝扩展?,php,symfony,twig,word-wrap,Php,Symfony,Twig,Word Wrap,我要寻找的是在不破坏标记的情况下限制输出的东西。比如说,我有一些来自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 lo
<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>
但我想得到的是:
<p>lorem i...</p>
lorem i
有什么办法可以做到这一点吗?如果您确定它以
开头,以结尾,请使用以下方法:
{{ output|raw[:10] ~ '...' }}</p>
{{output | raw[:10]~''.''}
如果您想在输出中查找并替换某些内容,您可以
<p>{{ (output|replace({'<p>': '', '</p>': ''}))|raw[:10] ~ '...' }}</p>
{(输出{':'',':'')原始[:10]~''.''''}
您应该尝试使用可用的twig扩展来截断twig&Symfony2中的文本
您的文本是html格式的,所以首先使用“striptags”过滤器获取纯文本,然后应用细枝的“truncate”过滤器
<p>{{ output|striptags|truncate(50, true) }}</p>
或者在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>
{{output | striptags | truncate(50)}
2-如果要保留整个单词,请设置第二个参数
<p>{{ output|striptags|truncate(50, true) }}</p>
{{output | striptags | truncate(50,true)}
3-如果您想使用自己的分隔符而不是“…”,请设置第三个参数
{{output | striptags | truncate(50,true,……)}
有关twig文本扩展的更多详细信息,请访问{{output | raw[:10]~'''''}}?在第一篇文章中,我提到输出可能来自MCE/FCK,所以我基本上不知道它是还是标签。这不是任何一种解决方案。哦,我明白了,所以在这种情况下,您需要类似于解析器的东西来解析来自MCE/FCK的任何内容,并转换为您想要的内容。您可以在tiwg中使用匹配项
以表达式[在Symfony中]构建它。出于安全原因,不要忘记自动转义:如果他自动转义,他将显示标记,而不是对其进行解释。我猜只要他使用| raw
,目标就是按原样显示内容(且已在控制器侧使用或类似方式进行了安全保护)。
<p>{{ output|striptags|truncate(50) }}</p>
<p>{{ output|striptags|truncate(50, true) }}</p>
<p>{{ output|striptags|truncate(50, true, ".........") }}</p>