【问题标题】:Smarty strpos and substr to get text after last forward slash in URLSmarty strpos 和 substr 在 URL 中的最后一个正斜杠之后获取文本
【发布时间】:2014-11-05 14:03:46
【问题描述】:

经过大量搜索this 是我得到的最接近的。我正在使用{$smarty.server.REQUEST_URI} 在 http 之后获取 URL 的第二部分。自然会得到很多 text1/text2/text3。现在我正在提取位于最后一个正斜杠之后的最后一个文本字符串。

据我了解,我必须使用 strpos 来获取最后一个正斜杠的位置,理想情况下从末尾开始并在第一个斜杠处停止,这实际上是我们从右到左开始以来的最后一个斜杠,然后使用substr 从该 strpos 开始获取任何内容。

【问题讨论】:

  • 只是一个想法:您确定要使用 smarty 执行此操作吗?它似乎不应该是模板的工作来计算。
  • 我的朋友 Amal,您发布的链接是指使用 PHP。虽然 smarty 是建立在 PHP 之上的,但它有自己有限的保留变量列表,我仍在研究中。
  • 我在寻找关于前端的解决方案,而不是从 PHP 后端实现这一点。我知道它也可以使用 javascript 来实现,在前端解决方案方面,这对代码来说比使用 smarty 更重要。
  • @JoeBorg: 明确一点:smarty 是在服务器端生成的,而不是在客户端。

标签: php regex smarty substr strpos


【解决方案1】:

你可以这样做(如果你使用 Smarty2):

{assign var="dirs" value="/"|explode:$smarty.server.REQUEST_URI}
{math equation ="x-y" x=$dirs|@count y=1 assign="last"}
{$dirs[$last]}

这样:

{assign var="dirs" value="/"|explode:$smarty.server.REQUEST_URI}
{$dirs[$dirs|@count-1]}

如果您使用 Smarty 3

【讨论】:

  • 哇,这很有挑战性,因为我不知道 smarty 会使用方程式和爆炸变量。我现在正在研究方程式是如何实现的。谢谢,记下来以备将来在我的编码日记中参考;)
【解决方案2】:

模板不适合进行此类处理。解析 PHP 中的请求字符串并将其需要显示的值分配给模板。模板系统的发明是为了将逻辑(数据处理,在代码中完成)与表示(HTML 和其他东西,在模板中完成)分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2015-06-18
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多