Frage

Ich habe Problem Formatierung Variablen in Smarty. Ich frage mich, was der beste Weg ist, es zu tun. Im Grunde habe ich eine Schnur? „ABC | DEFGH“ ich will Smarty den Teil von „DEFGH“ zu bekommen Wie würde ich über das tut dies gehe

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

funktioniert nicht

War es hilfreich?

Lösung

gelöst Gerade dies ohne var zurück in PHP Einstellung, und durch die eingebaute Funktion Wrapper verwendet.

Unter der Annahme, dass: $ 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>

Dies wird gedruckt:

  • ABC | DEFGH
  • ABC
  • DEFGH
  • Andere Tipps

    Einige Informationen über Smarty 3 im Fall, wenn jemand will das gleiche in Smarty 3 zu erreichen und nicht in Smarty 2:

    Die erste Sache ist, dass Sie benötigen Klammern hinzuzufügen, es Arbeit zu machen. substr:$bar_at+1 wird nicht funktionieren, aber substr:($bar_at+1) funktionieren wird.

    Aber in der Tat kann man einfachere Syntax verwenden:

    {assign var="var" value="ABC | DEFGH"}
    
    {$var|substr:($var|strpos:"|"+1)}
    

    Dies wird Ihnen mit Leerzeichen am Anfang DEFGH (vor und | sind Räume innerhalb var in Frage und in meinem Beispiel) und wie Sie Zeichenkette ohne Leerzeichen erhalten möchten, sollten Sie in diesem Fall +2 anstelle von +1:

    {$var|substr:($var|strpos:"|"+2)}
    

    oben Diese wurden in Smarty 3.1.19 getestet.

    Sie sollten auch wissen, dass in früheren Versionen (vor Smarty 3.1), wenn Sie in der Zeichenfolge UTF-8-Zeichen haben, sollten Sie eher mb_ Funktionen verwenden.

    Wie von Smarty 3.1 im Fall, wenn mbstring Erweiterung installiert ist Smarty verwendet automatisch mb_ Funktionen in diesem Fall so wird es kein Problem mit utf-8 Zeichen lang sein.

    Sie können mehr über Smarty utf-8-Codierung

    Diese Funktionen sind nicht in Smarty. Sie werden es in PHP teilen, bevor es auf die Vorlage zu senden. Oder Sie könnten Ihre eigene Split-Funktion Smarty Plugin schreiben. Oder nutzen Sie {php} Tags in der Vorlage, aber ich würde diese Lösung vermeiden, da sie gegen den ‚Geist‘ ist und Zweck der Smarty verwenden, Trennung von Darstellung und Logik, etc etc.

    Wenn wie Jimby mit:

    {$var|substr:$bar_at+1}
    

    ich hinzufügen, Klammern oder runde Klammer es funktioniert.

    {$var|substr:($bar_at+1)}
    
    Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top