繁体   English   中英

Twig - 从字符串中获取单词数

[英]Twig - get the number of words from a string

我正在使用工艺cms,它使用twig模板,并希望从字符串中获取单词的数量。 我试过使用PHP函数str_word_count()

       {% for entry in entries %}
          <a href="{{ entry.url }}">
            <div class="media-object">
              <div class="small-4 columns">
                <div class="media-object-section">
                  <img src= "{{ entry.topImage.first().getUrl('square') }}">
                </div>
              </div>
              <div class="small-8 columns">
                <div class="media-object-section main-section">
                  <h4>{{ entry.title }}</h4>
                  {% set numberOfWords = str_word_count(entry.summary) %}
                  <p>{{ entry.summary |split(" ")|slice(0, 15)|join(" ") }}</p>
                  <p>{{ entry.dateUpdated | date('j. F Y') }}</p>
                </div>
              </div>
            </div>
          </a>
        {% endfor %}

但是,我收到了一个错误:

未知的“str_word_count”函数。

如何从树枝模板中的字符串中获取单词数?

你可以这样做:

{% set numberOfWords = entry.summary|split(' ')|length %}

Split函数会根据给定的参数(在本例中为空格)将字符串拆分为数组, length将计算数组元素。

制作自定义扩展并使用其中的任何PHP函数: https//symfony.com/doc/current/templating/twig_extension.html

好吧,正如Tomas所建议的,我为这种情况编写了自己的twig(过滤器)函数:

    <?php

namespace AppBundle\TwigExtensions;


use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Twig\TwigFilter;

class TwigExtensions extends \Twig_Extension
{

    /**
     * this is needed
     *
     * @return string
     */
    public function getName()
    {
        return 'your_twig_extensions';
    }

    /**
     * 
     * @return array
     */
    public function getFunctions()
    {
        return array();
    }

    /**
     * 
     *
     * @return array
     */
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('strWordCount', array($this, 'strWordCount')),
        );
    }


  /**
     * count Words in string
     *
     * @return string
     */
    public function strWordCount($text = null)
    {
        return str_word_count($text);
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM