如何删除小树枝中文本的空白


How to delete white spaces of a text in twig?

在使用symfony2时,我使用的是twitch模板引擎。我正在想办法删除文本中的空白。

例如,I play应变为Iplay

我试过:

  • 无空间
  • Trim

首先让我们看看您尝试了什么以及为什么不起作用:

  • 无空格:不起作用,因为"使用无空格标记来删除HTML标记之间的空白,而不是HTML标记内的空白或纯文本中的空白"请参阅无空格文档
  • Trim:不起作用,因为"Trim过滤器从字符串的开始结束中删除空白(或其他字符)"请参阅Trim文档

您需要使用以下内容:

{{ 'Some Text With Spaces'|replace({' ': ''}) }}

这将输出:

SomeTextWithSpaces

更多详细信息,请参阅文档。

试试这个:

{{ "I plays"|replace({' ':''}) }}

您也可以创建自己的过滤器来完成

示例:

class MyExtensions extends 'Twig_Extension
{
    public function getFilters()
    {
        return array(
            new 'Twig_SimpleFilter('removeWhiteSpace', array($this, 'removeWhiteSpace'), array('is_safe' => array('html'))),
        );
    }
    public function removeWhiteSpace($string)
    {
       return preg_replace('/'s+/', '', $string);
    }
}

声明为服务:

myextensions.twig_extension:
      class: YourProject'YourBundle'Twig'MyExtensions
      public: false
      tags:
          - { name: twig.extension }

在你的树枝模板中称之为:

{{ "Test remove white space"|removeWhiteSpace }}

对我来说,当字符串包含不间断的空白时,这不起作用:

stringWithNonBreakingWhitespace|replace({' ':''}

要替换非制动空白,必须使用转义序列:

stringWithNonBreakingWhitespace|replace({''xc2'xa0':''}

使用无空格过滤器来删除HTML标记之间的空白,而不是HTML标记中的空白或纯文本中的空白:

{{ "<div>
        <strong>foo</strong>
    </div>"|spaceless }}

您可以将spaceless与apply标记结合起来,在大量HTML:上应用转换

{% apply spaceless %}
    <div>
        <strong>foo</strong>
    </div>
{% endapply %}