Smartyに文字列のファイル拡張子を取得する方法はありますか?何も見つからないようですが、私は爆発に相当するものを探していました。
ファイルの種類に応じて異なるアイコンを表示したいのですが、例えば。doc、docx、pdf
php関数を修飾子として使用できるため、関数を使用できますpathinfo()
上記の例に示されているように、すべてのphp関数を暗黙的に修飾子として使用できます。ただし、修飾子としてphp-functionsを使用することには、2つの小さな落とし穴があります。
まず、関数パラメータの順序が望ましくない場合があります。$fooを{"%2.f" | sprintf:$ 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' *}
regex_replaceを使用して、ファイル部分を削除できます。たとえば、次のようになります。
{$ file | regex_replace:"/.*./":""}
これにより、最初から最後のドットまですべてが削除されます。
詳細については、http://www.smarty.net/docs/en/language.modifier.regex.replace.tplを参照してください。