escape

Nuevo en la versión 1.9.0: Las estrategias css, url y html_attr se añadieron en Twig 1.9.0.

El filtro escape escapa una cadena para una inserción segura en la salida final. Es compatible con diferentes estrategias de escape en función del contexto de la plantilla.

De manera predeterminada, se utiliza la estrategia de escape HTML:

{{ user.username|escape }}

Por conveniencia, el filtro e está definido como un alias:

{{ user.username|e }}

Además, puedes usar el filtro escape fuera del contexto HTML gracias al argumento opcional que define la estrategia de escape a usar:

{{ user.username|e }}
{# es equivalente a #}
{{ user.username|e('html') }}

Y aquí tienes cómo escapar variables incluidas en código JavaScript:

{{ user.username|escape('js') }}
{{ user.username|e('js') }}

El filtro escape admite las siguientes estrategias de escape:

  • html: Escapa una cadena para el contexto HTML body.
  • js: Escapa una cadena para el contexto JavaScript.
  • css: Escapa una cadena para el contexto CSS. El escape CSS se puede aplicar a cualquier cadena insertada en CSS y escapa todo excepto caracteres alfanuméricos.
  • url: Escapa una cadena para los contextos URI o parameter. Este no se debe usar para escapar una URI completa; sólo un subcomponente insertado.
  • html_attr: Escapa una cadena para el contexto atributo HTML.

Nota

Internamente, escape utiliza la función htmlspecialchars nativa de PHP.

Prudencia

Al utilizar el escape automático, Twig intenta no escapar doblemente una variable cuándo la estrategia de escape automático es la misma que la aplicada por el filtro escape; Pero esto no trabaja cuándo utilizas una variable como estrategia de escape:

{% set strategy = 'html' %}

{% autoescape 'html' %}
    {{ var|escape('html') }}   {# no se escapará doblemente #}
    {{ var|escape(strategy) }} {# no se escapará doblemente #}
{% endautoescape %}

Cuándo utilizas una variable como estrategia de escape, deberías desactivar el escape automático:

{% set strategy = 'html' %}

{% autoescape 'html' %}
    {{ var|escape(strategy)|raw }} {# no se escapará doblemente #}
{% endautoescape %}

Argumentos

  • strategy: La estrategia de escape
  • charset: La cadena del juego de caracteres
Bifúrcame en GitHub