Некоторая информация о Smarty 3 в случае, если кто-то хочет, чтобы добиться того же в Smarty 3, а не в Smarty 2:
Первое, что вам нужно добавить скобки, чтобы сделать он работает. substr:$bar_at+1
не будет работать, но substr:($bar_at+1)
будет работать.
Но на самом деле вы можете использовать более простой синтаксис:
{assign var="var" value="ABC | DEFGH"}
{$var|substr:($var|strpos:"|"+1)}
Это даст вам DEFGH
с пространством в начале (до и |
пробелы внутри вар в вашем вопросе и в моем примере), и как вы хотите чтобы получить строку без пробелов, вы должны использовать в этом случае +2
вместо +1
:
{$var|substr:($var|strpos:"|"+2)}
Те выше, были проверены в Smarty 3.1.19
.
Вы также должны знать, что в предыдущих версиях (до Smarty 3.1), если у вас есть символы строки UTF-8, вы должны использовать функции mb_
.
По состоянию на Smarty 3.1 в случае, если установлено расширение mbstring
Smarty автоматически использует функции mb_
, поэтому никаких проблем с символами utf-8 не будет.
Вы можете прочитать больше о Smarty utf-8 encoding
Что вы получите в качестве вывода? – BoltClock 2010-12-08 16:51:14
Возможный дубликат: http://stackoverflow.com/questions/4325283/smarty-substr-a-variable – 2010-12-08 16:53:16
См. [Это] (http://www.smarty.net/forums/viewtopic.php?p=48137) Smarty тема. – 2010-12-08 16:53:27