Cadenas o strings en PHP

  • Por
  • y  
Aspectos relevantes de las cadenas o strings en PHP, un tipo de variables muy utilizado. Lista de caracteres protegidos.

Uno de los tipos de datos más corrientes en la mayoría de los lenguajes son los strings. También podremos conocerlas con el nombre de cadenas o "cadenas de caracteres". No son más que información que contiene texto, con caracteres alfanuméricos, cualquier mezcla de caracteres alfabéticos, símbolos y caracteres numéricos.

Por decirlo con otras palabras, en general, cuando guardamos cualquier texto en una variable, lo que estamos guardando técnicamente son cadenas o strings. Es un tipo de datos muy importante, ya que mucha de la información con la que tenemos que trabajar en las aplicaciones es texto.

Para asignar a una variable un contenido de tipo cadena, lo escribiremos entre comillas, valiendo tanto las comillas dobles como las comillas simples. En código da lugar a sentencias de este tipo:

$cadena="Esta es la información de mi variable de tipo string";

Si queremos mostrar en pantalla el valor de una variable o bien un mensaje cualquiera usaremos la instrucción echo como ya lo hemos visto en ejemplos diversos hasta el momento en el Manual de PHP:

echo $cadena; //sacaría "Esta es la información de mi variable"
Nota: En PHP existen diversos mecanismos para producir salida (escribir texto en la página web). La instrucción "echo" es el más sencillo que existe, válido cuando estás dentro de código PHP.

A la sentencia echo le podemos pasar no solo una variable de tipo cadena, pues en realidad saca por pantalla cualquier cosa: Si no es una cadena hará lo que pueda para producir una salida adecuada. Incluso podemos pasarle un literal de cadena:

echo "Esta es la información de mi variable"; //daría el mismo resultado
Nota: en lenguajes de programación en general, un "literal" se refiere a un dato escrito tal cual en el código. Un literal de tipo cadena se escribe entre comillas, pero un literal numérico se escribe sin las comillas.

Literales de cadena con comillas dobles o comillas simples

Algo característico de PHP es que permite usar tanto comillas simples como comillas dobles y, dependiendo de cómo lo hayamos hecho PHP interpretará las cadenas de manera distinta. Es algo que debemos de aprender cuanto antes al trabajar en PHP, porque si no, puede que nos de algunos problemas o surjan situaciones en las que el resultado de un programa no sea el que se esperaba.

Cadenas con comillas dobles

Si usamos comillas dobles para delimitar cadenas de PHP haremos que el lenguaje se comporte de una manera más "inteligente". Lo más destacado es que las variables que coloquemos dentro de las cadenas se sustituirán por los valores. Es mejor verlo con un código.

$sitioweb = "DesarrolloWeb";
$cadena = "Bienvenidos a $sitioweb";
echo $cadena;

Ese código producirá como salida "Bienvenidos a DesarrolloWeb". Es decir, PHP interpolará en la variable $cadena el valor de la variable $sitioweb, sustituyendo $sitioweb por su correspondiente valor: "DesarrolloWeb".

Dentro de las cadenas delimitadas por comillas dobles hay una gran cantidad de caracteres de escape, mediante los cuales podemos colocar en cadenas de caracteres cosas como saltos de línea, tabuladores o símbolos "$" que no serían considerados como inicio del nombre de una variable. Luego daremos más detalle sobre esto.

Cadenas con comillas simples

Cuando encierras un literal de cadena con comillas simples la cosa cambia bastante. Lo más destacable es que ninguna de tus variables se sustituirá por su valor. Puedes verlo en el siguiente código fuente:

$sitioweb = 'DesarrolloWeb';
$cadena = 'Bienvenidos a $sitioweb';
echo $cadena;

Este código fuente es prácticamente igual que el anterior, con la salvedad que estamos usando cadenas delimitadas por comillas simples. La salida es sensiblemente distinta, en este caso nos mostraría "Bienvenidos a $sitioweb", dado que no realiza la interpolación de la variable.

Como puedes ver, dentro de una cadena indicada con comillas simples no puedes insertar valores de variables de manera tan sencilla, sino que tendrías que romper la cadena y concatenar con la variable. En seguida hablaremos de cómo concatenar o unir cadenas, pero para que quede ya el ejemplo, para conseguir el resultado del script equivalente pero con comillas dobles, tendrías que escribir algo como esto:

$sitioweb = 'DesarrolloWeb';
$cadena = 'Bienvenidos a ' . $sitioweb;
echo $cadena;

¿Qué usar, comillas simples o dobles?

La respuesta es bien sencilla. Por lo general se recomienda usar comillas simples, puesto que a PHP le costará menos usarlas, dado que no intentará sustituir valores de variables dentro de ellas. Solo si quieres beneficiarte de las ventajas de la interpolación sencilla de variables sería recomendable usar las cadenas con comillas dobles, dado que generarás un código mucho más sencillo de leer por los humanos y de mantener durante la vida de la aplicación.

Concatenación de cadenas

Podemos yuxtaponer o concatenar varias cadenas utilizando el operador de concatenación de strings, que tiene el símbolo punto ".":

$cadena1="Perro";
$cadena2=" muerde";
$cadena3=$cadena1.$cadena2;
echo $cadena3; //El resultado es: "Perro muerde"

Aunque ya lo hemos dicho, usando comillas dobles podrías colocar esas variables dentro de nuestra cadena. Dejamos aquí otro ejemplo:

$a=55;
$mensaje="Tengo $a años";
echo $mensaje; //El resultado es: "Tengo 55 años"

La pregunta que nos podemos plantear ahora es... ¿Cómo hago entonces para que en vez del valor "55" me salga el texto "$a"? En otras palabras, cómo se hace para que el símbolo $ no defina una variable sino que sea tomado tal cual. Esta pregunta es tanto más interesante cuanto que en algunos de scripts este símbolo debe ser utilizado por una simple razón comercial (pago en dólares por ejemplo) y si lo escribimos tal cual, el ordenador va a pensar que lo que viene detrás es una variable siendo que no lo es.

Caracteres de escape

Para incluir el símbolo $, la contrabarra y otros caracteres utilizados por el lenguaje dentro de las cadenas y no confundirlos se usan los caracteres de escape.

Para insertar un caracter de escape tenemos que indicarlo comenzando con el símbolo de la contrabarra (barra invertida) y luego el del caracter de escape que deseemos usar.

Los caracteres de escape disponibles dependen del tipo de literal de cadena que estemos usando. En el caso de las cadenas con comillas dobles se permiten muchos más caracteres de escape. Los encuentras en la siguiente tabla:

Estos cambios de línea y tabulaciones tienen únicamente efecto en el código y no en el texto ejecutado por el navegador. En otras palabras, si queremos que nuestro texto ejecutado cambie de línea hemos de introducir un echo "<br>" y no .

Nota: El caracter de escape de salto de línea sólo cambia de línea en el código HTML creado y enviado al navegador cuando la página es ejecutada en el servidor. Ese salto de línea no tiene valor en el HTML, por lo que solamente lo verías al examinar el código fuente producido al ejecutar el script.

En el caso de las cadenas expresadas con comillas simples hay muchos menos caracteres de escape. Primero porque no son necesarios (como el símbolo $, que no puede ser confundido con el inicio de una variable, ya que no las tiene en cuenta) y segundo porque simplemente no se encuentran disponibles.

A continuación puedes ver la tabla de caracteres de escape permitidos en una cadena encerrada mediante comillas simples:

Sintaxis compleja de las llaves

Otra cosa útil que nos conviene aprender cuando trabajamos con cadenas es la posibilidad de interpolar valores complejos de variables un tanto especiales. En la documentación de PHP le llaman a esto la "sintaxis compleja", pero no conviene asustarse porque en realidad es bien simple.

Mira el siguiente código:

$array = array(1, 2, 40, 55);
$cadena = "La posición tres contiene el dato $array[2]";
echo $cadena; //escribe La posición tres contiene el dato 55

Aquí no surge ningún problema al expandir el valor de la posición 3 del array en la cadena, usando (eso sí) comillas dobles. Incluso aunque el array necesite un índice, PHP sabe que lo que tiene que mostrar ahí es una casilla del array. Pero ahora observa el siguiente código:

$array = array('uno' => 1, 'dos' => 2, 'tres' => 40, 'cuatro' => 55);
$cadena = "La posición 'tres' contiene el dato $array['tres']"; //esto produce un error!!

En este caso nuestro script producirá un error al ser interpretado por PHP, puesto que un array con índice alfanumérico (array asociativo) no es capaz de procesarlo bien cuando lo escribimos dentro de una cadena.

Para salvar esta situación entran en juego la mencionada sintaxis compleja de las llaves. Simplemente vamos a escribir el arraya asociativo que deseamos que PHP sustituya encerrado entre llaves. Así PHP lo reconocerá perfectamente.

$array = array('uno' => 1, 'dos' => 2, 'tres' => 40, 'cuatro' => 55);
$cadena = "La posición 'tres' contiene el dato {$array['tres']}"; //Ahora funciona bien
echo $cadena; //escribe La posición 'tres' contiene el dato 40

Quizás en un primer momento esta sintaxis de las llaves no te parezca muy útil, pero te aseguramos que en tu día a día con PHP la vas a usar bastante, porque muchas veces en PHP tienes datos que te vienen de arrays asociativos, o de otros tipos de estructuras que no se interpolan correctamente cuando estás escribiendo valores dentro de cadenas (siempre con comillas dobles).

Aunque no hemos tratado todavía cómo se reciben datos que te llegan de formularios, podemos adelantar aquí un código sencillo. Imagina que estás recbiendo un formulario y tienes un campo llamado "teléfono" en ese formulario. En la página que recibes ese formulario, te llega como $_POST['telefono']. Si quieres colocar ese teléfono dentro de una cadena podrías usar un código como este:

$telefonoPrefijo = "(+34) {$_POST['telefono']}";

Funciones de cadenas

Las cadenas pueden asimismo ser tratadas por medio de funciones de todo tipo. PHP es un lenguaje muy rico en este sentido, que incluye muchas posibles acciones que podemos realizar sobre ellas con tan solo ejecutar una función: Dividirlas en palabras, eliminar espacios sobrantes, localizar secuencias, remplazar caracteres especiales por su correspondiente en HTML, etc.

Por ejemplo aquí puedes ver el uso de una función bastante útil al programar en PHP y producir salida en HTML, en la que cambiamos todos los caracteres especiales de las entidades HTML (útil para evitar que se inyecte código HTML al documento que no queremos que aparezca formateado, sino escrito en la página con sus etiquetas y todo).

$cadenaOriginal = '<b>Me gusta PHP</b>';
$cadenaRetocada = htmlspecialchars($cadenaOriginal);
echo $cadenaRetocada; //escribe &lt;b&gt;Me gusta PHP&lt;/b&gt;

Más adelante veremos algunos nuevos ejemplos de funciones de cadenas. Pero como siempre recomendamos, recuerda mantenerte informado también con la documentación: funciones de string.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Autor

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Compartir

Comentarios

el Piez@

06/12/2002
He estado probando algunos codigos referentes a las cadenas de texto y me he dado cuenta que el caracter protegido \n se puede remplazar por un salto de linea real que se verá en la página.
Ejemplo
<?
$cadena = "Hola, esto es una linea y esta es
otra (en codigo fuente)";
echo $cadena;
?>

roberto

01/4/2004
estoy tratando de crear tablas en mysql y mi surgio una pregunta en mysql se pueden crear bases datos relacionadas igual q en sql server 7 o 2000. tengo mis dudas cualqier ayuda al respecto seria agradecido y como se relacionan en mysql

Pepotis

09/9/2004
Otra manera de escribir el nombre de una variable sin que se muestre la cadena que esta contiene, es poniendo el texto a mostrar entre comillas simples en vez de dobles. Un ejemplo:
<?php
$cadena="La manzana es verde";
echo "La variable contiene: $cadena";
/*Mostrará: La variable contiene:La manzana es verde*/
echo 'La variable se llama $cadena';
/*Mostrará: La variable se llama $cadena*/
ec
?>

dekada

12/6/2005
Hola tengo un problemita con un insert en una base de datos mysql es que cuando forma la cadena para la insercion de los datos no me inserta ningun registro en la tabla, es decir, no es que no funciona realmente que es cuando paso mas de 5 campo entre ellos hay campos vacios '' no me inserta el registro y tan poco me da un error

Odena

08/12/2005
a mi por el contrario, ahorita estoy teniendo problemillas porque quiero mandar textos que tengan saltos de lineas pero ni el caracter n ( ) ni el salto de linea real me funcionan ¿alguna otra opcion?

Sergio

22/2/2006
Yo añadiría a lo dicho en el artículo que si lo que quieres es hacer un cambio de línea escribiendo en un archivo de texto curiosamente debes escribir:

Curiosamente también, a veces funciona poniendo solamente pero si quieres estar 100% seguro de que se va a escribir un cambio de línea, te aconsejo el (no me preguntes el porque!).

necorage

11/9/2006
Buenas!
Tengo problemillas en hacer el siguiente Script, en principio simple:

<?
echo 8/2 ."<br>";
echo 8/2;
?>

Lo he probado de varias maneras pero nada de nada ...
que estoy haciendo mal? :?
Saludos y gracias por adelantado

versace123mx_versace

23/9/2010
Saludos
Hola este es un comentario para el anterior comentario.

No se nota en el navegador las tabulaciones, saltos de linea o retornos de carro. ya que solo sirve para verlo en el codigo fuente mas no el el navegador. si quieres ejecutarlo en el navegador, tienes la etiqueta <br> para hacer una cambio de linea y otras para hacer lo mismo pero que se muestre.

eliza

04/3/2013
arrays
me ayudo mucho sobre el tema del arrays, otra consulta tengo un practico sobre las burbujas y no se como hacerlo si hay alguien quien me pueda ayudar.... gracias

Miguel Ángel

05/4/2017
Error nada importante
Donde el array cuyo ejemplo da como resultado = 55.
El resultado del programita es = 40

Miguel Ángel

05/4/2017
Rectifico
Estaba bien!!!