Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于缩短文本的细枝扩展?_Php_Symfony_Twig_Word Wrap - Fatal编程技术网

Php 用于缩短文本的细枝扩展?

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

我要寻找的是在不破坏标记的情况下限制输出的东西。比如说,我有一些来自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>
但我想得到的是:

<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>