1

Smartyに文字列のファイル拡張子を取得する方法はありますか?何も見つからないようですが、私は爆発に相当するものを探していました。

ファイルの種類に応じて異なるアイコンを表示したいのですが、例えば。doc、docx、pdf

4

2 に答える 2

5

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' *}
于 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 に答える