PHP proporciona dos alternativas para declarar cadenas entre comillas simples o dobles en forma de sintaxis heredoc y newdoc.
- La cadena entre comillas simples no interpreta los caracteres de escape y no expande las variables.
- Por otro lado, si declara una cadena entre comillas dobles que contiene un carácter de comillas dobles, debe escaparla mediante el símbolo «\». La sintaxis heredoc proporciona un método conveniente.
Cadenas Heredoc en PHP
Las cadenas heredoc en PHP son muy parecidas a las cadenas entre comillas dobles, sin las comillas dobles. Significa que no necesitan escapar de las comillas y expandir las variables.
Sintaxis de Heredoc
$str=<<<IDENTIFIER
place a string here
it can span multiple lines
and include single quote ' and double quotes "
IDENTIFIER;
Primero, comience con el operador «<<<«. Después de este operador, se proporciona un identificador y, a continuación, una nueva línea. Le sigue la cadena en sí y, a continuación, el mismo identificador de nuevo para cerrar la cita. La cadena puede abarcar varias líneas e incluye comillas simples (‘) o comillas dobles («).
El identificador de cierre puede tener sangría con espacio o tabulación, en cuyo caso la sangría se eliminará de todas las líneas de la cadena doc.
Ejemplo
El identificador debe contener solo caracteres alfanuméricos y guiones bajos y comenzar con un carácter de subrayado o un carácter que no sea un dígito. El identificador de cierre no debe contener ningún otro carácter, excepto un punto y coma (;). Además, el carácter antes y después del identificador de cierre debe ser solo un carácter de nueva línea.
Echa un vistazo al siguiente ejemplo:
<?php
$str1 = <<<STRING
Hello World
PHP Tutorial
by TutorialsPoint
STRING;
echo $str1;
?>
Producirá el siguiente resultado:
Hello World
PHP Tutorial
by TutorialsPoint
Ejemplo
El identificador de cierre puede o no contener sangría después de la primera columna del editor. La hendidura, si la hubiera, se eliminará. Sin embargo, el identificador de cierre no debe tener sangría más allá de las líneas del cuerpo. De lo contrario, se lanzará un ParseError. Eche un vistazo al siguiente ejemplo y su resultado:
<?php
$str1 = <<<STRING
Hello World
PHP Tutorial
by TutorialsPoint
STRING;
echo $str1;
?>
Producirá el siguiente resultado:
PHP Parse error: Invalid body indentation level
(expecting an indentation level of at least 16) in hello.php on line 3
Ejemplo
No es necesario escapar las comillas de un heredoc, pero se pueden usar las secuencias de escape de PHP. La sintaxis de Heredoc también expande las variables.
<?php
$lang="PHP";
echo <<<EOS
Heredoc strings in $lang expand vriables.
The escape sequences are also interpreted.
Here, the hexdecimal ASCII characters produce \x50\x48\x50
EOS;
?>
Producirá el siguiente resultado:
Heredoc strings in PHP expand vriables.
The escape sequences are also interpreted.
Here, the hexdecimal ASCII characters produce PHP
Cadenas Nowdoc en PHP
Una cadena nowdoc en PHP es similar a una cadena heredoc excepto que no expande las variables, ni interpreta las secuencias de escape.
<?php
$lang="PHP";
$str = <<<'IDENTIFIER'
This is an example of Nowdoc string.
it can span multiple lines
and include single quote ' and double quotes "
IT doesn't expand the value of $lang variable
IDENTIFIER;
echo $str;
?>
Producirá el siguiente resultado:
This is an example of Nowdoc string.
it can span multiple lines
and include single quote ' and double quotes "
IT doesn't expand the value of $lang variable
La sintaxis del nowdoc es similar a la sintaxis del heredoc, excepto que el identificador que sigue al operador «<<<» debe estar entre comillas simples. El identificador de nowdoc también sigue las reglas para el identificador de heredoc.
Las cadenas Heredoc son como cadenas entre comillas dobles sin escapar. Las cadenas Nowdoc son como cadenas entre comillas simples sin escapar.