php行Smarty模板引擎反向strist

php line Smarty template engine reverse stristr

我想编辑我的 php 模板,但我做不对。 我用的是Smarty模板引擎。

我的默认 php 行如下所示:

{$childItem->getLabel()}

确实会像这样显示 HTML:

MY TEXT - MY SUB TEXT

我想删除 - 之前的所有内容。这样它只显示 MY SUB TEXT 部分。

我试过了,但那行不通,因为那会删除符号后面的内容:

{$childItem->getLabel()|stristr:'-' : true}

我该如何解决这个问题?

至于 php stristr 的文档:

If TRUE, stristr() returns the part of the haystack before the first occurrence of the needle (excluding needle).

但是,由于该函数的正常行为是包含针及其后的文本,而这并不是您想要的,您还必须使用 replace[=18 将其删除=],所以:

{$childItem->getLabel()|stristr:'-'|replace:'-':''}

您传递给 stristr 的附加 "true" 参数指的是 $before_needle,因此您将取回该部分连字符前的字符串。不幸的是,删除它将使您返回 之后的字符串部分并包括 连字符,即“- MY SUB TEXT”。

一个干净的解决方案是使用 explode,然后使用结果数组的第二个元素,如下所示:

{assign var="splitItem" value=" - "|explode:$childItem->getLabel()}
{$splitItem[1]}