2011-06-09 180 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