以下是我目前在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模板系统中做到吗?
答案 0 :(得分:1)
既然你在评论中提到自己已经实现了(2),那么这是第一次替换的解决方案,有两种方法:
您可以使用regex_replace:
{$pager->links|regex_replace:'/title="[\w\s]+"/':""}
或者,您可以直接使用php的preg_replace,如下所示:
{'/title="[\w\s]+"/'|preg_replace:'':$pager->links}
一开始看起来很奇怪,但让我解释一下语法:
Smarty支持使用|
(管道)符号将变量/字符串传递给某个php函数。但是,随后使用:
(冒号)参数传递其他参数。这与Variable Modifiers
例如,如果你想计算字符串上的字母,你可以这样做:
{$pager->links|strlen}
如果您想查看值foo
是否在数组$bar
内,您可以这样做:
{'foo'|in_array:$bar}
所以,对于看起来像func($arg1, $arg2, $arg3)
的php函数,这会转换为{$arg1|func:$arg2:$arg3}
毋庸置疑,首选方法是(1),我只建议第二种方法,因为在我看来,知道它很有意思。