2016-08-17 9 views
3

this questionと同じシナリオで質問がありますが、_が複数存在することがあります。最初の特殊文字の後の文字列を区切り文字として分割します。

例。

57b42a0557cdd_Filename_whatever.pdf 

どのように私はランダムuniquifierは異なる長さにすることができますが、いつもの間にアンダースコアがあるでしょうFilename_whatever.pdf

のように残りの部分を維持するために(アンダースコアを含む)最初のアンダースコアまで、すべてを省略することができますそれと実際のファイル名です。

上記の質問に似ています。 {{ filename|split('_')[1] }}が動作する可能性がありますが、実際のファイル名にアンダースコアがある場合はどうなりますか?

完全な一意の名前がプロジェクトのさまざまな部分でも使用されているので、表示目的のためには、これを枝で使用することをおすすめします。 documentationに見られるように

答えて

6

splitあなたがdoことができるようにも、explodeとしてlimitパラメータをサポートしています。

{{ '57b42a0557cdd_Filename_whatever.pdf' | split('_', 2)[1] }} 
{{ '57b42a0557cdd_Filename_what_ever.pdf' | split('_', 2)[1] }} 
{{ '57b42a0557cdd_File_name_whatever.pdf' | split('_', 2)[1] }} 
+0

ブリリアント!私はどういうわけか、最初はそれを理解できませんでした。しかし、今、私はそのことを限界の議論として見ています。ありがとうございました – Mentos93

1

別のオプション(ファイルは、エンティティの一部であると仮定)が上の関数を書くことですあなたが望むものを返すエンティティ。
たとえば、

<?php 

namespace AppBundle\Entity; 

class MyEntity 
{ 
    // ... other attributes 

    private $hashFileName; 

    private $cleanFileName; 

    // other functions 

    public function getHashFileName() 
    { 
     // as per you example; 57b42a0557cdd_Filename_whatever.pdf 
     return $this->hashFileName; 
    } 

    public function getCleanFileName() 
    { 
     $withouthash = explode('_', $this->hashFileName,2); 
     return $withouthash[1]; 
    } 
} 

次に、あなたのtwigファイルにあります。

{{ myObject.cleanfilename }} 
関連する問題