Smarty Получить расширение файла

Есть ли способ в Smarty, чтобы получить расширение файла строки. Я искал эквивалент взрыва, хотя не могу ничего найти.

Я хочу отобразить другой значок в зависимости от типа файла, например. DOC, DOCX, PDF

2 ответа

Решение

Поскольку вы можете использовать функции PHP в качестве модификаторов, вы можете использовать функцию pathinfo()

Все php-функции могут быть неявно использованы в качестве модификаторов, как показано в примере выше. Однако использование php-функций в качестве модификаторов имеет две небольшие ловушки:

Во-первых, иногда порядок функций-параметров не желателен. Форматирование $foo с помощью {"%2.f"|sprintf:$foo} на самом деле работает, но требует более интуитивно понятного, например {$foo|string_format:"%2.f"}, предоставляемого дистрибутивом Smarty.

Во-вторых, если включена защита, все php-функции, которые будут использоваться в качестве модификаторов, должны быть объявлены доверенными в свойстве $ modifiers политики securty. Подробнее смотрите в разделе "Безопасность". Источник

<?php

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

?>

{* template *}

{$filename|pathinfo:$smarty.const.PATHINFO_EXTENSION}
{* outputs 'txt' *}

Вы можете использовать regex_replace для удаления части файла, например, так:

{$ Файл |regex_replace:"/.*./":""}

Который удаляет все от начала до последней точки.

загляните на http://www.smarty.net/docs/en/language.modifier.regex.replace.tpl для получения дополнительной информации.

Другие вопросы по тегам