web-dev-qa-db-fra.com

striptags twig et caractères spéciaux html

J'utilise twig pour rendre une vue et j'utilise le filtre striptags pour supprimer les balises html . Cependant, les caractères spéciaux html sont désormais restitués sous forme de texte, l'élément entier étant entouré par "" . supprimer les caractères spéciaux ou les restituer, tout en utilisant la fonction striptags?

Exemple :

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

ou

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

Sortie:

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

J'ai eu un problème similaire, cela a fonctionné pour moi:

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

Arf, je l'ai enfin trouvé:

J'utilise un filtre twig personnalisé qui applique simplement une fonction php:

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

Maintenant, il rend correctement

Mon extension 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

J'essayais, entre autres, ces réponses:

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

Et encore eu des personnages étranges dans la forme finale. Ce qui m’a aidé, c’est de placer le filtre raw à la fin de toutes les opérations, c’est-à-dire:

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

J'ai eu le même problème, je l'ai résolu par la fonction ci-dessous, en utilisant 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