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"
J'ai eu un problème similaire, cela a fonctionné pour moi:
{{ variable |convert_encoding('UTF-8', 'HTML-ENTITIES') | raw }}
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';
}
}
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 }}
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';
}
}