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.