KJY*_*葉家仁 9 php smarty smarty2
我在smarty中遇到格式化变量问题.我想知道最好的方法是什么.基本上我有一个字符串"ABC | DEFGH"我想要聪明地获得"DEFGH"的子串我将如何去做这个?
{$var|substr:strpos:"|":strlen}
Run Code Online (Sandbox Code Playgroud)
不起作用
小智 26
刚刚解决了这个问题,而没有在PHP中设置var,并使用内置的函数包装器.
假设:$ var ="ABC | DEFGH";
{assign var="bar_at" value=$var|strpos:"|"}
<li>{$var}</li>
<li>{$var|substr:0:$bar_at}</li>
<li>{$var|substr:$bar_at+1}</li>
Run Code Online (Sandbox Code Playgroud)
这将打印:
有关Smarty 3的一些信息,如果有人想要在Smarty 3中实现相同而不是在Smarty 2中:
首先,您需要添加括号才能使其正常工作.substr:$bar_at+1不会工作,但substr:($bar_at+1)会奏效.
但实际上你可以使用更简单的语法:
{assign var="var" value="ABC | DEFGH"}
{$var|substr:($var|strpos:"|"+1)}
Run Code Online (Sandbox Code Playgroud)
这将DEFGH在开头给你空间(|在你的问题和我的例子中之前和是var里面的空格)并且你想要获得没有空格的字符串,你应该在这种情况下使用+2而不是+1:
{$var|substr:($var|strpos:"|"+2)}
Run Code Online (Sandbox Code Playgroud)
以上的那些在Smarty中进行了测试3.1.19.
您还应该知道在以前的版本中(在Smarty 3.1之前),如果您的字符串中包含UTF-8字符,则应该使用mb_函数.
从Smarty 3.1开始,如果mbstring安装了扩展,Smarty会mb_在这种情况下自动使用函数,因此utf-8字符不会出现任何问题.
您可以阅读有关Smarty utf-8编码的更多信息
| 归档时间: |
|
| 查看次数: |
34011 次 |
| 最近记录: |