smarty でフォーマット変数に問題があります。私はそれを行うための最良の方法は何だろうと思っていました。基本的に、私は文字列「ABC | DEFGH」を持っています。スマートに「DEFGH」の部分文字列を取得したいのですが、どうすればこれを行うことができますか?
{$var|substr:strpos:"|":strlen}
動作しません
PHP で var を設定し直すことなく、組み込みの関数ラッパーを使用して、これを解決しました。
$var = "ABC|DEFGH";
{assign var="bar_at" value=$var|strpos:"|"}
<li>{$var}</li>
<li>{$var|substr:0:$bar_at}</li>
<li>{$var|substr:$bar_at+1}</li>
これは印刷されます:
それらの機能は smarty にはありません。テンプレートに送信する前に、PHP で分割する必要があります。または、独自の分割関数 smarty プラグインを作成することもできます。または、テンプレートで {php} タグを使用しますが、smarty を使用する「精神」と目的、プレゼンテーションとロジックの分離などに反するため、その解決策は避けます。
Jimby のように使用する場合:
{$var|substr:$bar_at+1}
括弧または丸括弧を追加して機能させます。
{$var|substr:($bar_at+1)}