Informática
Diseño de páginas web dinámicas

Tu Instituto Online
   


 
Nivel Básico PHP: Cadenas de caracteres
Duración aproximada: 4 sesiones
   
Objetivos Objetivos
  • Conocer la definición de cadenas de caracteres
  • Conocer el acceso a los caracteres de las cadenas
  • Utilizar las principales funciones para trabajar con cadenas
   
Fuentes de información Fuentes de información
   
Contenidos
Contenidos
   
 

1.- Introducción

Uno de los tipos principales que estudiamos fue el de los strings o cadenas de caracteres. Éste tiene algunas características particulares que lo diferencian de otros tipos y, además contiene funciones que permiten realizar determinadas acciones de forma directa. Es por ello que en esta unidad nos centraremos en el tipo string y en sus particularidades.

2.- Definición de strings

Un string es una serie de caracteres donde un carácter es lo mismo que un byte, pudiendo llegar a alcanzar un tamaño total de 2 GB. Su definición se puede realizar de cuatro formas distintas: comillas simples, comillas dobles, sintaxis heredoc y sintaxis nowdoc.

2.1.- Comillas simples

La manera más sencilla de especificar un string es encerrarlo entre comillas simples (el carácter '). De este modo, podríamos definir un string como:

$bienvenida1 = 'Hola a todos'

$nombre_mujer = 'Juana'

Este tipo de definición nos permite definir un string de varias líneas del siguiente modo:

$texto_quijote = 'En un lugar de la mancha

de cuyo nombre no quiero acordarme'

Pero ¿qué pasaría si quisiéramos introducir una comilla simple dentro de valor de la variable? La solución pasa por poner una barra invertida antes de la comilla. Por ejemplo:

$texto = 'Y Pedro dijo: \'¿Cómo estáis?\''

$pregunta = 'La pregunta es: \'¿Cuál es la capital de España?\''

Otra opción que nos ofrece este tipo de definición es la de insertar una barra invertida, para ello deberemos escribir, al igual que con las comillas, una barra más delante, es decir, duplicarla. Por ejemplo:

$ruta = 'El fichero está en C:\\prueba'

Todas las demás sentencias de escape (que contengan la barra invertida) y variables no se expandirán cuando se incluyan dentro de una string definido con comillas simples:

$nombre = 'Pepe'

$bienvenida = 'Hola $nombre'

El resultado contenido por $bienvenida será Hola $nombre, y no Hola Pepe como cabría esperar.

A continuación mostramos un programa que implementa este tipo de definición:

Y su resultado:

2.2.- Comillas dobles

Otra de las formas de declarar un string es utilizando las comillas dobles. En este caso, el intérprete de PHP realiza una conversión en la que comprueba los nombres de variables y los sustituye por el contenido de éstas. De este modo:

$nombre = "Pepe"

$bienvenida = "Hola $nombre"

Al contrario de lo que pasaba con las comillas simples, el valor de la variable bienvenida será Hola Pepe. Este proceso de cambio es lo que se denomina parseo.

Además, incorpora más secuencias de escape (las que comentamos en el punto anterior que iban precedidas de una barra invertida) como son:

Secuencia
Significado
\n Nueva línea
\r Retorno de carro
\t Tabulación horizontal
\v Tabulación vertical
\\ Barra invertida
\$ Signo de dólar
\" Comillas dobles

A continuación mostramos un programa que implementa algunos ejemplos de definición de cadenas con comillas dobles:

Y el resultado:

Las cuatro primeras secuencias no se han incorporado debido a que su uso se limita a elementos de salida como archivos de texto plano o mensajes de correo electrónico.

  
Ejercicios
Ejercicio
   
 

En la teoría hemos visto dos programas en los que se implementan ejemplos de utilización de la definición de cadenas. Créalos y almacenalos con los nombres cadenas01.php y cadenas02.php. Además crea un nuevo programa (almacénalo como cadenas03.php) en el que:

  • crees dos variables: saludo y despedida, con valores Hola y Adiós, respectivamente
  • ahora crea otra variable llamada todo en la que incluyas las variables saludo y despedida (con comillas simples)
  • ahora crea otra variable llamada todo2 en la que incluyas las variables saludo y despedida (con comillas dobles)
  • imprime ambas variables con echo
  • explica, en un comentario en el programa, qué es lo que sucede
   
Contenidos
Contenidos
   
 

2.3.- Heredoc

Ésta es quizás la forma menos común de definir cadenas por su extraña sintaxis, aunque no por ello debemos obviarla. Es una potente forma de tener toda la flexibilidad de las comillas dobles sin el problema de tener que escapar las comillas dobles y, además las variables son expandidas.

La sintaxis heredoc es la siguiente:

$variable = <<<identificador

string o texto

identificador

El identificador de cierre debe empezar en la primera columna de la nueva línea y seguir las mismas reglas de nomenclatura de las etiquetas en PHP, es decir, solo puede contener caracteres alfanuméricos y guiones bajos, asi como empezar con un carácter alfabético o un guión bajo.

Es muy importante señalar que la línea con el identificador de cierre no debe contener ningún carácter, excepto un punto y coma. Esto significa que el identificador no debe usar sangría, y que no debe existir ningún espacio ni tabulación antes o después del punto y coma. Además el primer carácter antes del identificador de cierre debe ser un salto de línea definida por el sistema operativo local. Si se rompe esta regla y el identificador de cierre no estará considerado como tal y PHP continuará buscando uno. Si no se encuentra ningún identificador de cierre antes del final del fichero, se producirá un error de análisis en la última línea.

Veamos un ejemplo:

Y su resultado:

Otro ejemplo en el que se utilizan saltos de línea e impresión directa por pantalla:

Lo que mostrará por pantalla:

Ejercicios
Ejercicio
   
 

Implementa los ejemplos vistos en la teoría y almacénalos con los nombres cadenas04.php y cadenas05.php. Además crea dos nuevos programas (almacénalos como cadenas06.php y cadenas07.php) en los que imprimas tus datos (nombre, apellidos, edad, grupo y curso) y los días de la semana. Para el segundo utiliza un array en el que insertes todos los días e imprímelos utilizando los índices.

Contenidos
Contenidos
   
 

2.4.- Nowdoc

Esta sintaxis está disponible desde la versión 5.3.0 de PHP y es similar a la anterior pero se relaciona con las comillas simples. De hecho, la sintaxis es parecida a la heredoc:

$variable = <<<'identificador'

string o texto

identificador

La diferencia fundamental con la anterior es que en ésta el identificador de apertura tiene que estar encerrado entre comillas simples, mientras que el de cierre no las tendrá. Además, las reglas que vimos en el punto anterior acerca de los identificadores son aplicables a ésta.

Esta construcción es ideal para grandes cantidad de texto ya que no hay que escaparlo (ponerle las comillas simples o dobles para terminar) y no realiza ningún tipo de análisis, por lo que no desplegará variables.

Un ejemplo sencillo:

 

En éste se muestran diferentes sabores de helados, aunque como no despliega variables, no imprimirá el valor de los sabores del array:


Ejercicios
Ejercicio
   
 

Implementa el ejemplo visto en la teoría y almacénalo con el nombre de cadenas08.php. Una vez hecho crea otro nuevo programa (almacénalo como cadenas09.php) a partir de cadenas08.php, en los que soluciones el problema de impresión de los sabores y en el que se muestren, además, los precios de cada uno de éstos.

Contenidos
Contenidos
   
 

3.- Acceso a caracteres

Los caracteres dentro de un string pueden ser accedidos y modificados especificando la posición de carácter deseado (en base a la posición cero del primer carácter del string) empleando los corchetes de array, es decir, pueden ser accedidos de la misma forma que se hace con los vectores. Por ejemplo:

$cadena = "Bienvenidos a la clase"

$cadena[3] --> Imprimiría n

$cadena[10] --> Imprimiría s

Comenzando a contar en el índice 0 (que en nuestro caso sería la letra B), podremos seleccionar cualquier carácter que se encuentre dentro de la cadena definida. En caso de que no se encuentre dentro de éstos la ejecución mostrará un error. Veamos un ejemplo:

El resultado será:

Como se puede ver en el ejemplo, tenemos que comenzar a contar en cero por lo que la cuarta letra será el tercer elemento y la sexta letra el quinto elemento del string.

Existe una notación alternativa en la que, en lugar de utilizar corchetes se utilizan llaves. En el ejemplo se realiza el acceso de esta forma:

Y el resultado:

Este acceso a los diferentes caracteres de un string nos permite modificarlo cambiando, uno por uno, los caracteres que lo forman. Por ejemplo:

$cadena = "Bienvenidos a la clase"

$cadena[9] = "a";

El ejemplo anterior produciría un cambio de modo que el texto quedaría "Bienvenidas a la clase". También podríamos haberlo hecho de la siguiente manera:

$cadena = "Bienvenidos a la clase"

$cadena{9} = "a";

Lo que produciría el mismo resultado ya que ambas notaciones son iguales.

Para verlo más claramente tenemos un ejemplo en el que se sustituirán algunos caracteres de las cadenas:

El resultado, en el que se sutituyen dos letras y un número:


Ejercicios
Ejercicio
   
 

Implementa los ejemplos vistos en la teoría y almacénalos con los nombres cadenas10.php, cadenas11.php y cadenas12.php.

Contenidos
Contenidos
   
 

4.- Funciones

PHP nos dota de un conjunto de funciones que permiten realizar diferentes operaciones sobre las cadenas de caracteres. Concretamente las funciones podemos dividirlas, entre otros, en diferentes grupos: mayúsculas y minúsculas, eliminación de espacios, comparaciones y codificación ASCII.

En cada uno de los apartados iremos explicando las funciones, así como ejemplos que las ilustren.

4.1.- Mayúsculas y minúsculas

Existe un conjunto de funciones que permiten pasar los strings de mayúsculas a minúsculas y viceversa. Entre las funciones encontramos:

  • strtoupper:  Pasa toda la cadena a letras mayúsculas. Ejemplo:

$cadena = "paso a mayúsculas"

$cadena2 = strtoupper($cadena) --> $cadena2 = "PASO A MAYÚSCULAS"

  • strtolower: Pasa toda la cadena a letras minúsculas. Ejemplo:

$cadena = "PASO A MINÚSCULAS"

$cadena2 = strtolower($cadena) --> $cadena2 = "paso a minúsculas"

  • ucfirst: Pasa el primer carácter de una cadena a mayúscula. Ejemplo:

$cadena = "paso a mayúsculas del primer carácter"

$cadena2 = ucfirst($cadena) --> $cadena2 = "Paso a mayúsculas del primer carácter"

  • ucwords: Pasa a mayúsculas el primer carácter de cada palabra de un string (separadas por blancos, tabulaciones y saltos de línea). Ejemplo:

$cadena = "paso a mayúsculas del primer carácter de cada palabra"

$cadena2 = ucwords($cadena) --> $cadena2 = "Paso A Mayúsculas Del Primer Carácter De Cada Palabra"

Mostramos un programa en el que se implementan las funciones:

El resultado será el previsto:

4.2.- Eliminación de espacios

Las funciones para eliminar blancos y saltos de línea son muy útiles en aquellos casos en los que no queremos dejar espacios entre los diferentes caracteres de las cadenas. Entre las principales se encuentran:

  • chop:  Elimina blancos y saltos de línea a la derecha de un string dado. Ejemplo:

$cadena = "elimina los espacios derecha  "

$cadena2 = chop($cadena) --> $cadena2 = "elimina los espacios derecha"

  • ltrim: Elimina blancos y saltos de línea a la izquierda de un string. Ejemplo:

$cadena = "  elimina los espacios izquierda"

$cadena2 = ltrim($cadena) --> $cadena2 = "elimina los espacios izquierda"

  • trim: Elimina blancos y saltos de línea a derecha e izquierda de un string. Ejemplo:

$cadena = "  elimina los espacios ambos lados  "

$cadena2 = trim($cadena) --> $cadena2 = "elimina los espacios ambos lados"

Mostramos un programa en el que se implementan las funciones:

Y su resultado:

4.3.- Comparaciones

Las funciones de comparacion ofrecen multitud de posibilidades, entre ellas las de buscar ocurrencias de un string en otro. Las principales funciones son:

  • strpos(string1, string2):  Devuelve la posición de la primera ocurrencia de string 2 dentro de string1. Ejemplo:

$cadena1 = "Hola a todos"

$cadena2 = "to"

$pos = strpos($cadena1, $cadena2) --> $pos = 7

  • strspn(string1,string2): Devuelve la longitud en caracteres de s1 contando desde el principio hasta que aparece un carácter en s1 que
    no esta en s2. Ejemplo:

$cadena1 = "Hola a todos"

$cadena2 = "Hola"

$pos = strspn($cadena1, $cadena2) --> $pos = 4

  • strcmp(string1,string2): Compara dos strings y devuelve 1, 0 o –1 según sea mayor el primero, iguales o el segundo. Ejemplo:

$cadena1 = "primero"

$cadena2 = "primera"

$res = strcmp($cadena1, $cadena2) --> $res = 1

  • strcasecmp(string1,string2): Idem anterior pero case-insesitive (no distingue mayúsculas y minúsculas). Ejemplo:

$cadena1 = "Primero"

$cadena2 = "primero"

$res = strcasecmp($cadena1, $cadena2) --> $res = 0

En el siguiente programa se implementan los ejemplos vistos:

Y el resultado:

4.4.- Codificación ASCII

PHP nos ofrece dos funciones muy interesantes que nos permiten trabajar con los caracteres ASCII. Éstas son las siguientes:

  • chr(num):  Devuelve el carácter dado su número ascii. Ejemplo:

$num = 30

$car = chr($num) --> $car = 2

  • ord(car):  Dado un carácter devuelve su codigo ascii. Ejemplo:

$car = "a"

$num = ord($car) --> $num = 97

Un programa que simula lo anterior:

 

Y el resultado:


Ejercicios
Ejercicio
   
 

Implementa los ejemplos vistos en la teoría y almacénalos con los nombres cadenas13.php, cadenas14.php, cadenas15.php y cadenas16.php. Además implementa un programa (almacénalo con el nombre cadenas17.php) que, dada una cadena (la variable se llamará cadena y contendrá los caracteres que tú quieras) haga los siguientes pasos uno tras otro:

  • pase la primera letra de la cadena a mayúsculas y la imprima
  • elimine los espacios a izquierdas y derechas de la cadena y la imprima
  • la compare con la cadena "Prueba" e imprima el resultado

Una vez hecho comprímelo todo en un fichero llamado cadenas.zip y súbelo a la plataforma.

   
Creditos Créditos
Licencia de Creative Commons

Este documento es de dominio público bajo licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. v. 2.0.2.1.0

No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Los reconocimientos se realizan en el apartado Fuentes de información.

Los iconos empleados están protegidos por la licencia LGPL y se han obtenido de:
https://commons.wikimedia.org/wiki/Crystal_Clear
https://www.openclipart.org


Licencia de Creative Commons

Todas las capturas de pantalla tienen copyright y pertenecen a TuInsitutoOnline.com.

TuInstitutoOnline.com permite su uso siempre y cuando se muestren desde el dominio www.tuinstituoonline.com y NO PERMITE enlazar a ellas desde otros lugares.

Además, la estructura diseñada para mostrar el contenido de las unidades es propiedad de TuInstitutoOnline.com.

TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. Versión 2021.