web-dev-qa-db-ja.com

twig striptagsおよびhtml特殊文字

twig=を使用してビューをレンダリングし、striptagsフィルターを使用してhtmlタグを削除しています。ただし、要素全体が ""で囲まれているため、html特殊文字はテキストとしてレンダリングされます。 striptags関数を使用したまま、特殊な文字を削除したりレンダリングしたりできますか?

例:

{{ organization.content|striptags(" >")|truncate(200, '...') }}

または

{{ organization.content|striptags|truncate(200, '...') }}

出力:

"QUI SOMMES NOUS ? > NOS LOCAUXNOS LOCAUXDepuis 1995,  Ce lieu chargé d’histoire et de tradition s’inscrit dans les valeurs"
15
Sébastien

他の人を助けることができるなら、ここに私の解決策があります

_{{ organization.content|striptags|convert_encoding('UTF-8', 'HTML-ENTITIES') }}
_

トリムフィルターを追加して、前後のスペースを削除することもできます。次に、組織を切り捨てるか、スライスします。

2017年11月編集

「\ n」の改行を切り捨てと組み合わせて保持する場合は、次のようにします。

{{ organization.content|striptags|truncate(140, true, '...')|raw|nl2br }}

34
Elyass

私は同様の問題を抱えていた、これは私のために働いた:

{{ variable |convert_encoding('UTF-8', 'HTML-ENTITIES') | raw }}
6
Jon

Arf、私はついに見つけました:

私は、PHP関数を適用するだけのカスタムtwigフィルターを使用しています:

<span>{{ organization.shortDescription ?: php('html_entity_decode',organization.content|striptags|truncate(200, '...')) }}</span>

正しくレンダリングされるようになりました

私のPHP拡張機能:

<?php

namespace AppBundle\Extension;

class phpExtension extends \Twig_Extension
{

    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('php', array($this, 'getPhp')),
        );
    }

    public function getPhp($function, $variable)
    {
        return $function($variable);
    }

    public function getName()
    {
        return 'php_extension';
    }
}
3
Sébastien

私は、とりわけ、これらの答えのいくつかを試していました:

{{ organization.content|striptags|truncate(200, true) }}
{{ organization.content|raw|striptags|truncate(200, true) }}
{{ organization.content|striptags|raw|truncate(200, true) }}
etc.

そして、まだ最終的な形で奇妙なキャラクターを得ました。私を助けたのは、すべての操作の最後にrawフィルターを置くことです。

{{ organization.content|striptags|truncate(200, '...')|raw }}
2
Krzysztof Trzos

私は同じ問題を抱えていたので、strip_tagsを使用してこの関数で解決しました。

<?php

namespace AppBundle\Extension;

class filterHtmlExtension extends \Twig_Extension
{

    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('stripHtmlTags', array($this, 'stripHtmlTags')),
        );
    }


    public function stripHtmlTags($value)
    {

        $value_displayed = strip_tags($value);


        return $value_displayed ;
    }

    public function getName()
    {
       return 'filter_html_extension';
    }
}
0
goto