1

Smarty 有没有办法获取字符串的文件扩展名。我一直在寻找爆炸等价物,但似乎找不到任何东西。

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

4

2 回答 2

5

由于可以使用 php 函数作为修饰符,因此可以使用该函数pathinfo()

如上例所示,所有 php 函数都可以隐式用作修饰符。然而,使用 php-functions 作为修饰符有两个小陷阱:

首先 - 有时函数参数的顺序不是理想的。使用 {"%2.f"|sprintf:$foo} 格式化 $foo 确实有效,但要求更直观,例如 Smarty 发行版提供的 {$foo|string_format:"%2.f"}。

其次 - 如果启用了安全性,所有要用作修饰符的 php 函数都必须在安全策略的 $modifiers 属性中声明为受信任。有关详细信息,请参阅安全部分。 资源

<?php

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

?>

{* template *}

{$filename|pathinfo:$smarty.const.PATHINFO_EXTENSION}
{* outputs 'txt' *}
于 2011-06-09T20:02:59.417 回答
2

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

{$file|regex_replace:"/.*./":""}

这会删除从开始到最后一个点的所有内容。

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

于 2011-06-09T19:47:20.323 回答