Quelques infos sur les Smarty 3 dans le cas si quelqu'un veut obtenir le même dans Smarty 3 et non dans Smarty 2:
La première chose est que vous devez ajouter entre parenthèses à faire ça marche. substr:$bar_at+1
ne fonctionnera pas mais substr:($bar_at+1)
fonctionnera.
Mais en fait, vous pouvez utiliser une syntaxe plus simple:
{assign var="var" value="ABC | DEFGH"}
{$var|substr:($var|strpos:"|"+1)}
Cela vous donnera DEFGH
avec l'espace au début (avant et |
sont des espaces à l'intérieur var dans votre question et dans mon exemple) et que vous voulez pour obtenir la chaîne sans espace, vous devez utiliser dans ce cas +2
au lieu de +1
:
{$var|substr:($var|strpos:"|"+2)}
Ceux ci-dessus ont été testés dans Smarty 3.1.19
.
Vous devriez également savoir que dans les versions précédentes (avant Smarty 3.1) si vous avez dans votre chaîne de caractères UTF-8, vous devriez plutôt utiliser les fonctions mb_
. À partir de Smarty 3.1 si l'extension mbstring
est installée, Smarty utilise automatiquement les fonctions mb_
dans ce cas, donc il n'y aura aucun problème avec les caractères utf-8.
Vous pouvez en savoir plus sur Smarty utf-8 encoding
Qu'est-ce que vous obtenez en sortie? – BoltClock
duplication possible: http://stackoverflow.com/questions/4325283/smarty-substr-a-variable –
Voir [this] (http://www.smarty.net/forums/viewtopic.php?p=48137) Smarty sujet. –