Smarty中有没有办法获取字符串的文件扩展名。我一直在寻找爆炸等效,虽然似乎找不到任何东西。
我想根据文件类型显示不同的图标,例如。 doc,docx,pdf
答案 0 :(得分:5)
由于您可以使用php函数作为修饰符,因此可以使用函数pathinfo()
所有php函数都可以用作 如所示,隐含地使用修饰语 在上面的例子中。但是,使用 php-functions as modifiers有两个 小陷阱:
首先 - 有时是顺序 函数参数不是 理想的。格式化$ foo {“%2.f”| sprintf:$ foo}实际上有效, 但要求更直观,比如 {$ foo | string_format:“%2.f”}即是 由Smarty发行版提供。
其次 - 如果启用了安全性,则全部 php函数,用作 修饰符必须声明为可信 在$的modifiers属性中 安全政策。请参阅安全性 部分了解详情。 Source
<?php
$smarty->assign('filename', 'foo\bar.txt');
?>
{* template *}
{$filename|pathinfo:$smarty.const.PATHINFO_EXTENSION}
{* outputs 'txt' *}
答案 1 :(得分:1)
您可以使用regex_replace删除文件部分,例如像这样:
{$文件| regex_replace: “/.*./”: “”}
从中删除从开头到最后一个点的所有内容。
查看http://www.smarty.net/docs/en/language.modifier.regex.replace.tpl了解详情。