Aprende a imprimir de forma segura una cadena de texto desde el contexto PHP a un contexto JavaScript.

Un problema que siempre ha existido es la forma en que se comunica PHP con JavaScript en el lado del cliente debido a los caracteres especiales dentro de la cadena que pueden hacer que su código JS se bloquee por completo. Por ejemplo, eche un vistazo al siguiente código:

<?php 
$str = <<<EOF
    Test
    String
EOF;
?>

<script>
    var myString = "<?php echo $str ?>";
</script>

Si este código es procesado por un motor JS, por ejemplo, en el navegador, verá la siguiente excepción:

JS Parse Error: PHP String to JavaScript

De hecho, nuestra cadena en PHP tiene varias líneas y también se imprime de la misma manera. La cadena debe escaparse, es decir, reemplazar los caracteres especiales que pueden contaminar su JavaScript para que sea adecuado para JavaScript. En este artículo le mostraremos lo fácil que es imprimir de forma segura una cadena desde PHP dentro de un contexto de JavaScript utilizando un ayudante de Symfony.

Imprimir de forma segura una cadena de PHP a JavaScript

Afortunadamente, en lugar de incluir métodos complejos que probablemente nadie va a entender, Symfony 1.4 incluye una gran cantidad de ayudantes como los DateHelperNumberHelperUrlHelperotros . Estos ayudantes ofrecen muchos métodos que los desarrolladores utilizan con frecuencia. Uno de estos ayudantes es el ayudante Escaping, que como su nombre lo dice, incluye un par de métodos que pueden usarse para escapar caracteres especiales de cadenas en diferentes situaciones. Para incluir este ayudante en sus vistas / acciones, simplemente puede usar el use_helpermétodo y el nombre del ayudante como primer argumento, que en este caso es el ayudante de escape:

<?php use_helper("Escaping"); ?>

Esto le permitirá usar diferentes funciones php simples donde se ha cargado el asistente. El que necesitamos para imprimir de forma segura una cadena de PHP dentro de un contexto de JavaScript es el método esc_js_no_entities, este método escapa de una cadena, lo que lo hace adecuado para ser colocado en una cadena de JavaScript. Devuelve el valor de escape, así que en lugar de imprimir su variable, imprima el valor devuelto por el método que pasa su cadena como primer argumento:

<?php // Incluir el asistente de escape de Symfony 1.4 ?>
<?php use_helper("Escaping"); ?>    

<?php 
$str = <<<EOF
    Test
    String
EOF;
?>

<script>
    var myString = "<?php echo esc_js_no_entities($str) ?>";
</script>

PHP imprimirá la siguiente rebaja:

<script>
    var myString = "    Test\n    String";
</script>

Rápido y funcional, ¿no? Hay métodos más útiles que escapan de la colección de métodos para el ayudante Escapar como esc_specialcharsesc_raw, por lo que no se olvide de echar un vistazo a la documentación oficial legado del ayudante aquí .

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores