9

smarty でフォーマット変数に問題があります。私はそれを行うための最良の方法は何だろうと思っていました。基本的に、私は文字列「ABC | DEFGH」を持っています。スマートに「DEFGH」の部分文字列を取得したいのですが、どうすればこれを行うことができますか?

{$var|substr:strpos:"|":strlen}

動作しません

4

4 に答える 4

28

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>

これは印刷されます:

  • ABC|DEFGH
  • ABC
  • DEFGH
  • 于 2010-12-14T19:09:46.893 に答える
    4

    それらの機能は smarty にはありません。テンプレートに送信する前に、PHP で分割する必要があります。または、独自の分割関数 smarty プラグインを作成することもできます。または、テンプレートで {php} タグを使用しますが、smarty を使用する「精神」と目的、プレゼンテーションとロジックの分離などに反するため、その解決策は避けます。

    于 2010-12-08T16:52:02.377 に答える
    0

    Jimby のように使用する場合:

    {$var|substr:$bar_at+1}
    

    括弧または丸括弧を追加して機能させます。

    {$var|substr:($bar_at+1)}
    
    于 2013-09-19T08:19:56.453 に答える