检查绳子的长度,然后用空间垫或用树枝拼接

时间:2017-05-30 20:27:38

标签: php symfony twig

我想知道是否存在一个检查一个长度的树枝函数,然后将字符串限制为所需的长度或用空格填充它。

我知道如何使用str_pad和substr并编写一个新的Twig过滤器。但我想知道是否有人可以使用exignts twig filter / functions

来做到这一点

例如(字符串作为商品的var名称)

{{ "123123123123123"|filter(5) }}

返回“12312”

{{ "12"|filter(5) }}

返回“12_____”(以_作为空格)

3 个答案:

答案 0 :(得分:5)

您可以将format过滤器与padding&精确修饰符:

此示例最多可填充10个字符或将字符串修剪为10个字符:

Default, left padding:

Cuts to 10...
Arbitrary character:        {{ "%'_10.10s"|format("123123123123123") }}
Space-Padded:               {{ "% 10.10s"|format("123123123123123") }}
Zero-Padded:                {{ "%010.10s"|format("123123123123123") }}

... or expands to 10:
Arbitrary character:        {{ "%'_10.10s"|format("123") }}
Space-Padded:               {{ "% 10.10s"|format("123") }}
Zero-Padded:                {{ "%'010.10s"|format("123") }}

Right padding:

Cuts to 10...
Arbitrary character:        {{ "%'_-10.10s"|format("123123123123123") }}
Space-Padded:               {{ "% -10.10s"|format("123123123123123") }}
Zero-Padded:                {{ "%0-10.10s"|format("123123123123123") }}

... or expands to 10:
Arbitrary character:        {{ "%'_-10.10s"|format("123") }}
Space-Padded:               {{ "% -10.10s"|format("123") }}
Zero-Padded:                {{ "%'-010.10s"|format("123") }}

输出:

Default, left padding:

Cuts to 10...
Arbitrary character:        1231231231
Space-Padded:               1231231231
Zero-Padded:                1231231231

... or expands to 10:
Arbitrary character:        _______123
Space-Padded:                      123
Zero-Padded:                0000000123

Right padding:

Cuts to 10...
Arbitrary character:        1231231231
Space-Padded:               1231231231
Zero-Padded:                1231231231

... or expands to 10:
Arbitrary character:        123_______
Space-Padded:               123       
Zero-Padded:                0000000123

请注意,即使添加了对齐修饰符,0-padding也只能从左侧开始

修改:TwigFiddle

答案 1 :(得分:2)

要获得Twig中的计数,您可以尝试这样做:

{% if users|length > 100 %}
    {{ users | truncate(50, true) }}
{% endif %}

其中users是变量。在上述场景中,如果用户长度大于100,则将其限制为50个字符。

如果您只想在一行中执行此操作,请尝试使用以下三元组:

{{ (users|length > 100) ? truncate(50, true) : users }}

注意:为了使用truncate,可能需要激活Text扩展名。您可以激活它,如下所示:

# app/config/config.yml
  services:
    twig.extension.text:
        class: Twig_Extensions_Extension_Text
        tags:
            - { name: twig.extension }

答案 2 :(得分:2)

这是"标准"的答案。 Twig按要求运行:

{% for i in 0..4 %}
    {{- var|slice(i,1)
    ? var|slice(i,1)
    : '-' -}}
{% endfor %}

您可以根据需要将'-'替换为空格' '

这是一个显示它正常工作的Twigfiddle。我有两个样本来看看差异。 https://twigfiddle.com/ioxeh0

确保使用三元组中的减号,删除附加空格。享受!