Php 细枝-从字符串中获取字数

Php 细枝-从字符串中获取字数,php,string,twig,Php,String,Twig,我使用的是craft cms,它使用了细枝模板,并希望从字符串中获得单词数。我尝试过使用PHP函数str_word_count: 但是,我犯了一个错误: 未知str\u word\u计数函数 如何从细枝模板中的字符串中获取字数?您可以这样做: {% set numberOfWords = entry.summary|split(' ')|length %} 函数将按给定的参数空间将字符串拆分为数组,并对数组元素进行计数。您可以这样做: {% set numberOfWords = entry.

我使用的是craft cms,它使用了细枝模板,并希望从字符串中获得单词数。我尝试过使用PHP函数str_word_count:

但是,我犯了一个错误:

未知str\u word\u计数函数


如何从细枝模板中的字符串中获取字数?

您可以这样做:

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

函数将按给定的参数空间将字符串拆分为数组,并对数组元素进行计数。

您可以这样做:

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

函数将按给定的参数空间将字符串拆分为数组,并对数组元素进行计数。

创建自定义扩展并使用其中的任何PHP函数:

创建自定义扩展并使用其中的任何PHP函数:

正如Tomas建议的那样, 我为这种情况编写了自己的细枝过滤器函数:

    <?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);
    }

}

正如Tomas所说, 我为这种情况编写了自己的细枝过滤器函数:

    <?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);
    }

}

你的php版本是什么?你的php版本是什么?如果你有两个部分的单词怎么办?那么我的答案会把它算作一个。例如,foo-bar将产生一个单词。但是,即使根据定义,也可以将其计算为1:就这个函数而言,“word”被定义为一个与区域设置相关的字符串,包含字母字符,字母字符也可以包含,但不能以“和-字符”开头。我更多考虑的是不带-的两部分单词,比如说乒乓球,如果你有两个部分的单词呢?那么我的答案是单数。例如,foo-bar将产生一个单词。但是,即使根据定义,也可以将其视为1:为了实现此功能,“word”被定义为一个与区域设置相关的字符串,其中包含字母字符,也可以包含,但不能以“and-characters”开头。我更多地考虑了不包含-,例如乒乓球的两部分单词