以下是我目前的Smarty模板:
<div class="tbl_pagination">
{if $pager}{$pager->links}{/if}
<div>
我的
{$pager->links}
将输出此HTML:<div class="tbl_pagination">
<ul><li><a href="javascript:toPage(3)" title="previous page">Back</a></li>
<li><a href="javascript:toPage(1)" title="page 1">1</a></li>
<li><a href="javascript:toPage(2)" title="page 2">2</a></li>
<li><a href="javascript:toPage(3)" title="page 3">3</a></li>
<li class='active'>4</li>
<li><a href="javascript:toPage(5)" title="page 5">5</a></li>
<li><a href="javascript:toPage(6)" title="page 6">6</a></li>
<li><a href="javascript:toPage(7)" title="page 7">7</a></li>
<li><a href="javascript:toPage(5)" title="next page">Next</a></li>
</ul></div>
</div>
我想换两样东西:
我想完成删除
the title
属性。无论哪个
li
具有类active
也需要有一个a href
。下面是我想要的样子:
<div class="tbl_pagination">
<ul><li><a href="javascript:toPage(3)">Back</a></li>
<li><a href="javascript:toPage(1)">1</a></li>
<li><a href="javascript:toPage(2)">2</a></li>
<li><a href="javascript:toPage(3)">3</a></li>
<li class='active'><a href="#">4</a></li>
<li><a href="javascript:toPage(5)">5</a></li>
<li><a href="javascript:toPage(6)">6</a></li>
<li><a href="javascript:toPage(7)">7</a></li>
<li><a href="javascript:toPage(5)">Next</a></li>
</ul></div>
</div>
是否可以在Smarty模板系统中使用其替换功能执行此操作?
最佳答案
既然您在评论中提到您自己实现了(2),下面是第一个替换的解决方案,有两种方法:
您可以使用regex_replace:{$pager->links|regex_replace:'/title="[\w\s]+"/':""}
或者,可以直接使用php的preg_replace,如下所示:{'/title="[\w\s]+"/'|preg_replace:'':$pager->links}
一开始这可能看起来很奇怪,但让我解释一下语法:
Smarty支持使用|
(pipe)符号将变量/字符串传递给某些php函数。但是,其他参数随后与:
(冒号)参数一起传递。这与Variable Modifiers的语法一致
例如,如果要计算字符串中的字母数,可以执行以下操作:
{$pager->links|strlen}
如果您想查看值
foo
是否在数组$bar
内,您可以:{'foo'|in_array:$bar}
因此,对于一个看起来像
func($arg1, $arg2, $arg3)
的php函数,这将转换为{$arg1|func:$arg2:$arg3}
不用说,首选的方法是(1),我只建议第二种,因为,在我看来,这是有趣的知道。