如何在大写字母之后添加空格只有在跟随小写字母时?

时间:2018-01-09 17:12:30

标签: symfony twig

Symfony twig

如果只跟随小写字母,如何在大写字母后面添加空格。

{{ 'IWantHTML'|humanize }} //displays 'I want h t m l'. // it should be 'I want HTML'.

另一件事是它使第一个字母后面的所有小写字母。 e.x。

{{ 'IWantHTML'|humanize }} // should be 'I Want HTML'.
{{ 'i_want_html'|humanize}} // should be 'I want html'.
{{ 'CustomerPickSale2'|humanize}} // should be 'Customer Pick Sale2'.

3 个答案:

答案 0 :(得分:0)

这是人性化过滤器的片段:

function humanize($str) {
    $str = trim(strtolower($str));
    $str = preg_replace('/[^a-z0-9\s+]/', '', $str);
    $str = preg_replace('/\s+/', ' ', $str);
    $str = explode(' ', $str);
    $str = array_map('ucwords', $str);
    return implode(' ', $str);
}

你可以看到它没有做你想要的。所以你必须实现自己的过滤器如何Write Twig Extentions以及如何创建Custom Twig Fitler

答案 1 :(得分:0)

我建议你Twig Extensions

答案 2 :(得分:0)

在自定义树枝过滤器下面工作!!

new Twig_SimpleFilter('readable', array($this, 'readableFormat'))

 /**
 * @param $string
 * @return mixed
 */
public function readableFormat($string)
{
    $match_filter = array(
        '/(?<!\ )[A-Z][a-z]+/',
        '/(?<!\ )[A-Z][A-Z]+/',
    );

    $Words = preg_replace($match_filter, ' $0', trim($string));
    return str_replace('_', ' ', $Words);
}

{{ 'IWantHTML'|readable }} // I Want HTML
{{ 'i_want_html'|readable|ucfirst }} // I want html
{{ 'CustomerPickSale2'|readable|ucfirst }} // Customer Pick Sale2