Smarty getting substring of a var with strpos as start and strlen as end

后端 未结 4 1350
面向向阳花
面向向阳花 2021-01-12 02:00

I am having issue formatting variables in smarty. I was wondering what is the best way to do it. Basically i have a string \"ABC | DEFGH\" i want smarty to get the substri

4条回答
  •  旧时难觅i
    2021-01-12 02:24

    Some info about Smarty 3 in case if someone want to achieve the same in Smarty 3 and not in Smarty 2:

    The first thing is that you need to add parentheses to make it work. substr:$bar_at+1 won't work but substr:($bar_at+1) will work.

    But in fact you can use simpler syntax:

    {assign var="var" value="ABC | DEFGH"}
    
    {$var|substr:($var|strpos:"|"+1)}
    

    This will give you DEFGH with space at the beginning (before and | are spaces inside var in your question and in my example) and as you want to get string without space you should use in this case +2 instead of +1:

    {$var|substr:($var|strpos:"|"+2)}
    

    Those above were tested in Smarty 3.1.19.

    You should also know that in previous versions (before Smarty 3.1) if you have in your string UTF-8 characters you should rather use mb_ functions.

    As of Smarty 3.1 in case if mbstring extension is installed Smarty automatically uses mb_ functions in that case so there won't be any problem with utf-8 characters.

    You can read more about Smarty utf-8 encoding

提交回复
热议问题