2011-06-09 154 views
0

有没有在Smarty中获取字符串文件扩展名的方法。我一直在寻找爆炸等值,尽管似乎无法找到任何东西。Smarty获取文件扩展名

我想根据文件类型显示不同的图标,例如。 doc,docx,pdf

回答

4

由于可以用PHP用作改性剂,则可以使用该函数pathinfo()

所有的PHP函数可以用作改性剂 隐含的形式,证明在实施例 上方。然而,使用 PHP-用作改性剂具有两个 小缺陷:

首先 - 的 函数参数的有时次序不是 希望之一。使用 {“%2.f”| sprintf:$ foo}格式化$ foo实际上可行, 但要求更直观,如 {$ foo | string_format:“%2.f”}即 Smarty发行。

其次 - 如果启用了安全性,所有 PHP函数将被用作 修饰符必须声明在 securty政策的$修饰符属性信任 。有关详细信息,请参阅安全性 部分。 Source

<?php 

$smarty->assign('filename', 'foo\bar.txt'); 

?> 

{* template *} 

{$filename|pathinfo:$smarty.const.PATHINFO_EXTENSION} 
{* outputs 'txt' *} 
+0

这工作出色,谢谢。 – 2011-06-09 20:10:57

+0

谢谢!为我节省了很多时间和杂乱的代码:) – tvgemert 2014-11-28 14:19:36

1

您可以使用regex_replace删除文件部分,例如像这样:

{$文件| regex_replace: “/.*./”: “”}

从而消除一切从开始到最后的点。

查看http://www.smarty.net/docs/en/language.modifier.regex.replace.tpl了解更多信息。

+0

对不起,遗憾的是这个没有工作 – 2011-06-09 20:10:10

+0

什么是“没有工作”是什么意思?你究竟做了什么?究竟发生了什么? – ckruse 2011-06-09 20:15:00

+0

它简单地从字符串中不返回任何东西。上述评论第一次工作。 – 2011-06-11 07:37:53