En PHP, las cadenas de texto se delimitan por comillas (dobles o simples).
<?php
print "<p>Esto es una cadena.</p>\n";
?>
<p>Esto es una cadena.</p>
<?php
print '<p>Esto es otra cadena.</p>';
?>
<p>Esto es otra cadena.</p>
Las cadenas contienen lógicamente caracteres del juego de caracteres en el que se guarde el archivo (UTF-8, CP-1252, ISO-8859-1, etc.), pero algunos caracteres necesitan un tratamiento especial, como se explica más adelante.
Si las comillas de apertura y cierre no son del mismo tipo (una de ellas doble y otra simple), se produce un error de sintaxis.
<?php
print "<p>Esto es una cadena.</p>\n';
?>
Parse error: syntax error, unexpected end of file, expecting
variable (T_VARIABLE) or ${ (T_DOLLAR_OPEN_CURLY_BRACES)
or {$ (T_CURLY_OPEN) in ejemplo.php on line 3
Si una cadena está delimitada por comillas dobles, en su interior puede haber cualquier número de comillas simples, y viceversa.
<?php
print "<p>Esto es una comilla simple: '</p>";
?>
<p>Esto es una comilla simple: '</p>
<?php
print '<p>Esto es una comilla doble: "</p>';
?>
<p>Esto es una comilla doble: "</p>
Lo que no puede haber en una cadena es una comilla del mismo tipo que las que delimitan la cadena.
<?php
print "<p>Esto es una comilla doble: "</p>";
?>
Parse error: syntax error, unexpected '/' in ejemplo.php on line 2
<?php
print '<p>Esto es una comilla simple: '</p>';
?>
Parse error: syntax error, unexpected '/' in ejemplo.php on line 2
Para poder escribir en una cadena una comilla del mismo tipo que las que delimitan la cadena, se debe utilizar los caracteres especiales \' o \".
<?php
print "<p>Esto es una comilla simple: ' y esto una comilla doble: \"</p>";
?>
<p>Esto es una comilla simple: ' y esto una comilla doble: "</p>
<?php
print '<p>Esto es una comilla simple: \' y esto una comilla doble: "</p>';
?>
<p>Esto es una comilla simple: ' y esto una comilla doble: "</p>
Y por supuesto se pueden utilizar los caracteres especiales \' y \" con cualquier delimitador:
<?php
print "<p>Esto es una comilla simple: \' y esto una comilla doble: \"</p>";
?>
<p>Esto es una comilla simple: ' y esto una comilla doble: "</p>
<?php
print '<p>Esto es una comilla simple: \' y esto una comilla doble: \"</p>';
?>
<p>Esto es una comilla simple: ' y esto una comilla doble: "</p>
Pero los caracteres especiales \" y \' no se pueden utilizar para delimitar cadenas.
<?php
print \"<p>Esto es una cadena.</p>\n\";
?>
Parse error: syntax error, unexpected '"', expecting identifier (T_STRING)
in ejemplo.php on line 2
<?php
print \'<p>Esto es una cadena.</p>\n\';
?>
Parse error: syntax error, unexpected ''<p>Esto es una cadena.</p>\n\'
(T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING)
in ejemplo.php on line 2
Aunque en los ejemplos anteriores las comillas simples o dobles son equivalentes, en otras situaciones no lo son. Por ejemplo, PHP no sustituye las variables que se encuentran dentro de cadenas delimitadas con comillas simples, mientras que sí que lo hace si se utilizan comillas dobles, como se ve en el siguiente ejemplo. El caso especial de las variables que son matrices multidimensionales se comenta en la lección Matrices).
<?php
$cadena = "Hola";
print "<p>La variable contiene el valor: $cadena</p>";
?>
<p>La variable contiene el valor: Hola</p>
<?php
$cadena = "Hola";
print '<p>La variable contiene el valor: $cadena</p>';
?>
<p>La variable contiene el valor: $cadena</p>
PHP tampoco sustituye algunos caracteres especiales (por ejemplo, el salto de línea \n) dentro de las comillas simples, como se ve en el siguiente ejemplo:
<?php
print "<pre>Esto está en\ndos líneas.</pre>";
?>
<pre>Esto está en
dos líneas</pre>
<?php
print '<pre>Esto está en\ndos líneas.</pre>';
?>
<pre>Esto está en\ndos líneas</pre>
En el código HTML generado con PHP también se pueden escribir comillas simples o dobles. Los dos ejemplos siguientes producen código html válido:
<?php
print "<p><strong style='color: red;'>Hola</strong></p>";
?>
<p><strong style='color: red;'>Hola</strong></p>
<?php
print '<p><strong style="color: red;">Hola</strong></p>';
?>
<p><strong style="color: red;">Hola</strong></p>
En estos apuntes se delimitan las cadenas con comillas dobles. Si el código html / css generado contiene comillas, en estos apuntes se generan también comillas dobles, por lo que dentro de las cadenas se utiliza el carácter especial \". Únicamente en las consultas SQL (que se verán más adelante) se utilizan comillas simples dentro de las cadenas.
<?php
print "<p><strong style=\"color: red;\">Hola</strong></p>";
?>
<p><strong style="color: red;">Hola</strong></p>
Por distintos motivos, algunos caracteres necesitan escribirse dentro de las cadenas de una forma especial denominada caracteres especiales. Los caracteres especiales empiezan por el carácter contrabarra (\). Los caracteres especiales más utilizados son los siguientes:
Carácter | Significado |
---|---|
\n | Salto de línea |
\" | Carácter comilla doble " (en una cadena delimitada por comillas dobles) |
\' | Carácter comilla simple ' (en una cadena delimitada por comillas simples) |
\$ | Carácter dólar $ |
\\ | Carácter contrabarra \ |
\{ | Carácter llave de apertura { |
<?php
print "<p>Las cadenas se delimitan con comillas (" o ').</p>";
?>
Parse error: syntax error, unexpected 'o' (T_STRING) in ejemplo.php on line 2
<?php
print "<p>Las cadenas se delimitan con comillas (\" o ').</p>";
?>
<p>Las cadenas se delimitan con comillas (" o ').</p>
<?php
print "<p>Los nombres de variables empiezan por $. Por ejemplo $edad.</p>";
?>
Warning: Undefined variable: edad in ejemplo.php on line 2
Los nombres de variables empiezan por $. Por ejemplo .
<?php
print "<p>Los nombres de variables empiezan por $. Por ejemplo \$edad.</p>";
?>
<p>Los nombres de variables empiezan por $. Por ejemplo $edad.</p>
<?php
$m[5][3] = "abc";
print "<p>Para sustituir el valor de una matriz de dos dimensiones se deben usar llaves: por ejemplo, {m[5][3]}.</p>";
?>
<p>Para sustituir el valor de una matriz de dos dimensiones se deben usar llaves: por ejemplo, abc</p>
<?php
$m[5][3] = "abc";
print "<p>Para sustituir el valor de una matriz de dos dimensiones se deben usar llaves: por ejemplo, \{m[5][3]}.</p>";
?>
<p>Para sustituir el valor de una matriz de dos dimensiones se deben usar llaves: por ejemplo, {m[5][3]}</p>
Además, existen también estos caracteres especiales, menos utilizados que los anteriores:
Carácter | Significado |
---|---|
\t | Tabulador horizontal |
\XXX | Carácter de código XXX en octal |
\xXX | Carácter de código XX en hexadecimal |
\r | Retorno de carro |
\v | Tabulador vertical |
\e | Escape |
\f | Salto de página (en impresoras antiguas) |
Se pueden insertar saltos de línea en el código HTML de la página insertándolos directamente en el interior de las cadenas o mediante el carácter especial \n. Este salto de línea es ignorado por los navegadores, pero aumenta la legibilidad del código fuente.
Los ejemplos siguientes producen el mismo resultado en los navegadores (una lista de dos elementos), pero el código fuente es más legible en los tres últimos casos. En las soluciones de los ejercicios de este curso se utiliza preferiblemente el último estilo, ya que facilita la reutilización de fragmentos de código.
<?php
print "<ul><li>Uno</li><li>Dos</li></ul>\n";
?>
<ul><li>Uno</li><li>Dos</li></ul>
<?php
print "<ul>";
print "<li>Uno</li>";
print "<li>Dos</li>";
print "</ul>\n";
?>
<ul><li>Uno</li><li>Dos</li></ul>
<?php
print "<ul>\n";
print "<li>Uno</li>\n";
print "<li>Dos</li>\n";
print "</ul>\n";
?>
<ul>
<li>Uno</li>
<li>Dos</li>
</ul>
<?php
print "<ul>\n <li>Uno</li>\n <li>Dos</li>\n</ul>\n";
?>
<ul>
<li>Uno</li>
<li>Dos</li>
</ul>
<?php
print "<ul>
<li>Uno</li>
<li>Dos</li>
</ul>\n";
?>
<ul>
<li>Uno</li>
<li>Dos</li>
</ul>
<?php
print "<ul>\n";
print " <li>Uno</li>\n";
print " <li>Dos</li>\n";
print "</ul>\n";
?>
<ul>
<li>Uno</li>
<li>Dos</li>
</ul>
El operador . (punto) permite concatenar dos o más cadenas.
<?php
print "<p>Pasa" . "tiempos</p>\n";
?>
<p>Pasatiempos</p>
Concatenar cadenas de texto como en el ejemplo anterior no sirve para mucho, ya que se podría escribir una única cadena en vez de varias cadenas concatenadas. El interés de la concatenación es que podemos concatenar cadenas con cosas que no son cadenas: variables, funciones, en general, expresiones. Por ejemplo
<?php
print "<p>3 * 5 + 12 = " . 3 * 5 + 12 . "</p>\n";
?>
<p>3 * 5 + 12 = 27</p>
Nota: Antes de PHP 8.0, si la expresión concatenada era un cálculo aritmético, convenía rodearla con paréntesis, aunque en algunos casos (si por ejemplo sólo hay multiplicaciones y divisiones) los paréntesis no eran estrictamente necesarios. A partir de PHP 8.0, esos paréntesis ya no son necesarios porque el operador de concatenación (.) tiene menos precedencia que los operadores suma y resta o los operadores bit a bit.
<?php
print "<p>Número al azar entre 1 y 10: " . rand(1, 10) . "</p>\n";
?>
<p>Número al azar entre 1 y 10: 8</p>
El operador combinado de asignación con concatenación (.=) permite modificar una variable concatenándole una cadena o expresión:
<?php
$cadena = "Pasa";
print "<p>$cadena</p>\n";
$cadena .= "tiempos";
print "<p>$cadena</p>\n";
?>
<p>Pasa</p>
<p>Pasatiempos</p>