Hola a tod@s,

Hoy continuamos con nuestro curso que dejamos la semana pasada con su cuarta entrega, Desarrollo Web con PHP y MySQL (IV), donde estuvimos viendo el tratamiento y la utilización de números en el lenguaje PHP.

A parte de la teoría, vimos unas cuantas funciones muy interesantes que nos permitían dar un formato específico a un número como round() o number_format(), y también como conseguir números aleatorios con la función rand().

En el último ejemplo que vimos, una calculadora de compras a plazos, pudimos comprobar como se trabajaba con números en PHP de forma práctica.

Hoy continuaremos con la utilización de cadenas de caracteres en PHP.

Siguiendo la estructura de capítulos del curso, empezamos el capítulo 7. Utilización de cadenas en PHP.

7. Utilización de cadenas en PHP

Una cadena en PHP se declara con el tipo string. Un string es una serie de caracteres donde un carácter es lo mismo que un byte (8 bits). Esto significa que PHP solo soporta el conjunto de 256 caracteres y por lo tanto no tiene soporte nativo Unicode( detalles del tipo de dato string).

Una variable del tipo string puede llegar a alcanzar 2GB de tamaño.

Un string literal puede ser especificado de 4 formas diferentes:

Pero nosotros emplearemos las más comunes, que son las dos primeras de la lista anterior (comillas simples y comillas dobles).

Comillas simples

La manera más sencilla de especificar un string es encerrarlo entre comillas simples (el carácter ).

Para especificar una comilla simple literal (que se quiera escribir el carácter aposta y no especificar el final del string), se escapa con una barra invertida (\). Para especificar una barra invertida literal(que se desee escribir una barra invertida \ ), se duplica (\\). Todas las otras instancias de barras invertidas serán tratadas como una barra invertida literal: esto significa que otras secuencias de escape (salto de línea, volver al inicio de la línea, etc.) que se puedan utilizar, tales como \r or \n, serán mostradas literalmente como se especifican en lugar de tener cualquier significado especial.

A diferencia de las sintaxis de comillas dobles y heredoc, las variables y las sentencias de escape para caracteres especiales no se expandirán (no se verán correctamente) cuando estén incluidas dentro de un string con comillas simples.

Comillas dobles

Si un string está encerrado entre comillas dobles (), PHP interpretará más sentencias de escape como caracteres especiales:

Caracteres escapados
Sentencia Significado
\n avance de línea (LF o 0x0A (10) en ASCII)
\r retorno de carro (CR o 0x0D (13) en ASCII)
\t tabulador horizontal (HT o 0x09 (9) en ASCII)
\v tabulador vertical (VT o 0x0B (11) en ASCII) (desde PHP 5.2.5)
\e escape (ESC o 0x1B (27) en ASCII) (desde PHP 5.4.0)
\f avance de página (FF o 0x0C (12) en ASCII) (desde PHP 5.2.5)
\\ barra invertida
\$ signo del dólar
\” comillas dobles
\[0-7]{1,3} la secuencia de caracteres que coincida con la expresión regular es un caracter en notación octal
\x[0-9A-Fa-f]{1,2} la secuencia de caracteres que coincida con la expresión regular es un caracter en notación hexadecimal

Al igual que en la delimitación de un string mediante comillas simples, escapar cualquier otro carácter puede dar lugar a que se muestre también la barra invertida. Antes de PHP 5.1.1, la barra invertida en \{$var} no se mostraba.

La característica más importante de entrecomillar un string mediante comillas dobles es el hecho que los nombres de las variables son expandidas (o string parsing, es que se pueden ver el contenido de las variables de PHP cuando se escriben entre comillas dobles).

7.1 Concatenar cadenas

Si en nuestro código PHP tenemos 2 variables del tipo string y las queremos juntar(concatenar), usaremos el carácter punto “.” para concatenar variables, y así, concatenar los valores que se encuentran dentro de cada una.

7.2 Utilización de varias líneas

Si creamos un campo de texto dentro de un formulario HTML, y un usuario escribe un texto extenso con varias líneas, ¿Como podemos capturar todas las líneas con PHP?.

PHP tiene una función llamada nl2br(), que su función es insertar saltos de línea HTML antes de todas las nuevas líneas de un string.

En el caso de páginas HTML y PHP, la captura de los datos sería:

Otro ejemplo de nl2br() sería:

7.3 Seguridad en etiquetas HTML

Las etiquetas o TAGS de HTML pueden acarrear varios problemas a la hora de procesar los datos con una página PHP, uno de los más conocidos es cuando un usuario (¡con maldad!) pueda escribir código HTML dentro de un campo de un FORM de una página HTML que hayamos creado nosotros.

  • Problema: El usuario introduce alguna etiqueta HTML en un campo de un formulario, ya que esta se ejecutará en la página de procesado del formulario(PHP).
  • Solución: PHP tiene implementadas unas funciones para deshabilitar estas etiquetas en la página de procesado del formulario.

Estas funciones son:

  • htmlentities(): Deshabilita las etiquetas HTML, mostrando solo como texto.
  • strip_tags(): Elimina las etiquetas HTML, ni se ejecutan ni se muestran por pantalla.

Si por ejemplo, tenemos una web en HTML donde tenemos un formulario con un campo de texto donde tenemos que introducir nuestro nombre, y el usuario introduce dentro del campo el siguiente texto:

En nuestra página de procesado de datos PHP, si deseamos mostrar el contenido del campo HTML capturado($_POST[‘nombre’]), nos mostrará esto:

Nombre:

Pero si utilizamos htmlentities() al capturar datos en PHP:

El usuario introducirá dentro del campo el siguiente texto:

Y ahora en nuestra página de procesado de datos PHP, si deseamos mostrar el contenido del campo HTML capturado(htmlentities($_POST[‘nombre’])), nos mostrará esto:

Nombre: <input type=”text” name=”nombre”>

Es decir, ya no ejecuta el código HTML introducido en el campo, pero se muestra como texto.

Pero si optamos por utilizar la función strip_tags():

El usuario introducirá dentro del campo el siguiente texto:

Y en nuestra página PHP usamos (strip_tags($_POST[‘nombre’]))para capturar los datos se verá así:

Nombre:

Es decir, no se ejecutará ni el código HTML introducido, ni tampoco se verá texto. ¡Se quedará vacío!

Ahora vamos a ver un ejemplo donde quedarán más claro como usar estas funciones.

        Ejemplo de envío de datos mediante formulario con funciones

En este ejemplo, vamos a crear una página HTML con un formulario. La página HTML se llamará envia_prueba_funciones.html y la página PHP de procesado de datos se llamará procesa_prueba_funciones.php.

envia_prueba_funciones.html

procesa_prueba_funciones.php

7.4 Subcadenas

PHP dispone de una serie de funciones que podemos utilizar para preparar cadenas, buscar a través de ellas y realizar comparaciones entre ellas.

Estas funciones son:

  • strtok(): Crea una subcadena desde una cadena más grande, utilizando un separador determinado.

  • substr(): Crea una subcadena haciendo referencia a la posición del índice de los caracteres de la cadena.

  • strlen(): Nos indica cuantos caracteres hay en una cadena.

  • str_word_count(): Nos indica cuantas palabras hay en una cadena.

  • strcomp(): Nos indica la evaluación de la comparación entre 2 cadenas devolviendo un número entero. strcomp() puede devolver 0 (si las 2 cadenas son iguales), 1 (si $var1 > $var2) o -1 (si $var1 < $var2).

  • strcasecmp(): Hace lo mismo que strcomp(), pero no diferencia entre mayúsculas y minúsculas. strcasecmp() puede devolver 0 (si las 2 cadenas son iguales), 1 (si $var1 > $var2) o -1 (si $var1 < $var2).

  • strstr(): Mediante un “indicador”, captura este indicador y todo lo que viene después.

  • strpos(): Devuelve la posición del indicador con un valor numérico.

  • Diferencia entre strstr() i strtok(): La gran diferencia entre estas dos funciones es que strstr(), mediante un “indicador”, captura este indicador y todo los caracteres que vienen después. Sin embargo, strtok() crea una subcadena desde una cadena más grande y utilizando un indicador captura todo lo que hay desde que empieza la cadena hasta el indicador que le hemos indicado.

7.5 Ajustar cadenas

PHP posee también funciones que nos permiten transformar caracteres, palabras o incluso toda la cadena entre mayúsculas y minúsculas.

Estas funciones son:

  • ucfirst(): Convierte a mayúscula la primera letra (primer carácter) de la cadena.

  • ucwords(): Convierte a mayúscula la primera letra de todas las palabras de una cadena.

  • strtoupper(): Convierte a mayúscula una cadena completa.

  • strtolower(): Convierte a minúscula una cadena completa.

Hasta aquí esta parte del curso Desarrollo Web con PHP y MySQL. La semana próxima iremos incrementando la complejidad de nuestro código PHP con el estudio y trabajo de Arrays o Matrices (definir, crear, acceder, modificar, eliminar, imprimir, combinar, ordenar, transformar, etc.) e iremos viendo de forma progresiva todos y cada uno de sus métodos o funciones para trabajar con ellas con más facilidad.

Hasta entonces un saludo y no os olvidéis dejar vuestros comentarios o incidencias sobre el curso.

Info | PHP.NET

Curso | Desarrollo Web con PHP y MySQL