上次出现的 Smarty substr & strpos

Smarty substr & strpos from last occurrence

{assign var="bar_at" value=$product.supplier_reference|strpos:"="}

$product.supplier_reference看起来像https://www.example.com/search?w=1366&h=610&q=the_actual_reference

我需要获取最后一个“=”(实际引用)之后的内容

最后一次出现后如何获取strpos?

首先正确的函数是:strrpos

你有多种方法来完成这个:

1- 纯粹的聪明方式:

{assign var="str" value="https://www.example.com/search?w=1366&h=610&q=the_actual_reference"}
{assign var="offset" value=$str|strrpos:"="}
{assign var="reference" value=$str|substr:($offset+1)}
{$reference}

2- 在插件目录中创建新插件,该目录位于以下路径下:vendor/smarty/smarty/libs/plugins/,使用新插件名称添加新文件,比方说 function.getReference.php

创建一个新函数smarty_function_getReference

并编写您的纯 PHP 函数,然后直接从您的 smarty 模板中使用它,如下所示:

function  smarty_function_money ($paramters) {
    $url = $paramters['url'];
    // here is our function body
}

在你的 smarty 模板中:

{getReference url="https://www.example.com/search?w=1366&h=610&q=the_actual_reference"}

3- 添加新修饰符:

无论您在哪里定义 smarty 视图逻辑,都请注册新修饰符:

$callback = function ($string) {
    // perform your logic within this callback
};

$this->registerPlugin('modifier', 'getRefernce', $callback);

然后直接从您的 smarty 模板调用此修饰符,如下所示:

{"https://www.example.com/search?w=1366&h=610&q=the_actual_reference"|getRefernce}