web-dev-qa-db-fra.com

Comment supprimer les espaces blancs d'un texte en brindille?

J'utilise le moteur de modèle twig tout en utilisant symfony2. J'essaie de trouver un moyen de supprimer les espaces blancs d'un texte.

Par exemple, I play deviendra Iplay.

J'ai essayé:

21
KubiRoazhon

Voyons d'abord ce que vous avez essayé et pourquoi cela n'a pas fonctionné:

  • Sans espace: ne fonctionne pas car "Utilisez la balise sans espace pour supprimer les espaces entre les balises HTML, et non les espaces dans Balises HTML ou espaces en texte brut "voir documentation sans espace .
  • Trim: ne fonctionne pas car "Le filtre de découpage supprime les espaces (ou d'autres caractères) à partir du début et fin d'une chaîne "voir documentation de trim .

Ce que vous devez utiliser est le suivant:

{{ 'Some Text With Spaces'|replace({' ': ''}) }}

Cela produira:

SomeTextWithSpaces

Plus de détails dans la documentation .

42
dlondero

Essaye ça:

{{ "I plays"|replace({' ':''}) }}
3
Jayesh Chitroda

Vous pouvez également créer votre propre filtre pour ce faire

Exemple:

class MyExtensions extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('removeWhiteSpace', array($this, 'removeWhiteSpace'), array('is_safe' => array('html'))),
        );
    }

    public function removeWhiteSpace($string)
    {

       return preg_replace('/\s+/', '', $string);
    }
}

Déclarez-le comme service:

myextensions.twig_extension:
      class: YourProject\YourBundle\Twig\MyExtensions
      public: false
      tags:
          - { name: twig.extension }

Et appelez-le dans le vôtre twig template:

{{ "Test remove white space"|removeWhiteSpace }}
3
DOZ

Pour moi, cela ne fonctionnait pas lorsque la chaîne contient des espaces blancs insécables:

stringWithNonBreakingWhitespace|replace({' ':''}

Pour remplacer les espaces non freinés, vous devez utiliser la séquence d'échappement:

stringWithNonBreakingWhitespace|replace({'\xc2\xa0':''}
1
jbator