gpt4 book ai didi

php - 使用正则表达式替换 smarty 模板系统?

转载 作者:行者123 更新时间:2023-11-28 01:40:14 24 4
gpt4 key购买 nike

这是我目前在我的 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>

我正在尝试替换两个不同的东西:

  1. 我想完成删除 the title 属性。

  2. 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),这里是第一个替换的解决方案,有 2 种方法:

  1. 您可以使用 regex_replace :

    {$pager->links|regex_replace:'/title="[\w\s]+"/':""}

  2. 或者,你可以直接使用 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),我只建议第二种方法,因为在我看来,了解它很有趣。

关于php - 使用正则表达式替换 smarty 模板系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com