TWIG:大写使其他字母变小

Zwe*_*012 12 capitalization symfony twig

我有一个带有这个内容的变量 "i want HTML"

当我做出capitalize {{ variable|capitalize }}的判决是:"I want html"

我怎样才能只写出TWIG中句子的第一个字母,而其他字母就像它们一样!?

小智 21

你可以这样做:

{{ variable[:1]|upper ~ variable[1:] }}
Run Code Online (Sandbox Code Playgroud)

来自https://github.com/twigphp/Twig/issues/1652


myk*_*iwi 9

您可以使用php函数创建一个返回字符串的新过滤器ucfirst.


Sam*_*ent 6

为了说明一个好的twig练习解决方案,您可以创建一个自定义的Utilities Twig Extension并考虑使用重音字符串的多字节字符串(mb),以便正常工作:

use Twig_SimpleFilter;

class UtilitiesExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new Twig_SimpleFilter('ucfirst', 
                array($this, 'ucFirst'), array('needs_environment' => true)
            ),
        );
    }

    public function ucFirst(Twig_Environment $env, $string)
    {
        if (null !== $charset = $env->getCharset()) {
            $prefix = mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset);
            $suffix = mb_substr($string, 1, mb_strlen($string, $charset));
            return sprintf('%s%s', $prefix, $suffix); 
        }
        return ucfirst(strtolower($string));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以通过twig文件调用这样的过滤器.口音甚至工作:

{{ 'étudiant de PHP' | ucfirst }}
Run Code Online (Sandbox Code Playgroud)

结果在:"ÉtudiantdePHP"