Introducción
El manejo de
strings es otro de los pilares de la programación en PHP, y si bien existen infinidad de funciones para trabajar con ellas que se pueden consultar en la programación oficial, aquí solo veremos las más utilizadas.
Los
strings se pueden definir de diferentes maneras, si bien las más común es la de encerrar lo entre comillas (simples o dobles). En principio, ambas formas están aceptadas, aunque se establece una pequeña clasificación:
- usaremos comillas simples para strings "tal cual."
- usaremos comillas dobles si vamos a utilizar caracteres de escape o control interpolar variables, etc.
Ver ejemplo de código
Para conocer la
longitud de un string utilizamos la función
strlen(), que devuelve la longitud en
bytes del string, lo que implica que todos los caracteres cuentan, independientemente de su valor.
Ver ejemplo de código
La función
strtr() permite
transformar un string, sustituyendo unos caracteres por otros predefinidos:
Ver ejemplo de código
Por último, es posible utilizar un
string como si fuera un array en el que cada caracter es un elemento del mismo
Ver ejemplo de código
Comparar strings
En ocasiones necesitaremos comparar
strings para realizar ciertas operaciones, si bien hay que tener cuidado con las conversiones internas entre datos de PHP. Así, el siguiente ejemplo devolverá true, ya que internamente el
string se convertirá al entero 123 antes de la comparación. Esto se podría haber evitado si hubiéramos utilizado el comparador
idéntico ===:
Ver ejemplo de código
No obstante, existen funciones específicas de PHP para realizar las comparaciones y cuyo valor devuelto será 0 si las cadenas son consideradas iguales. Estas funciones son:
strcmp(), que compara dos strings tal cual, como si utilizáramos el operador idéntico
strcasecmp(), que funciona como la anterior, pero es insensible a mayúsculas y minúsculas. Muy útil para campos de
captcha, email, etc.
strncmp() y strncasecmp(), que permiten comparar solo una cantidad definida de caracteres (en el segundo caso de manera insensible a mayúsculas y minúsculas). Una función similar a esta sería
substr_compare()
Ver ejemplo de código
Buscar y reemplazar strings
Existen diferentes funciones para realizar búsquedas y reemplazos en
strings PHP, si bien hay que tener en cuenta que cuanto más complicada sea la función, más tiempo de ejecución necesitará, pudiendo ralentizar los procesos considerablemente, sobre todo en búsquedas masivas.
La forma más sencilla de
buscar en un string es con la función
strpos(), que busca nuestra "aguja" o porción deseada en el "pajar" o cadena completa y devuelve la posición de la primera ocurrencia. Es importante, al realizar las comparaciones, recordar usar el operador idéntico, para no confundir la primera posición del
string 0 con
false. También se puede invocar de manera opcional un tercer parámetro para indicar desde qué posicion del
string se quiere empezar a buscar:
Ver ejemplo de código
Una variante de esta función es
strstr(), que funciona de manera similar pero devolviendo la porción del
string desde la porción buscada:
Ver ejemplo de código
En general,
strstr() es más lenta que
strpos(), con lo que si no necesitamos la porción del
string, es mejor utilizar
strpos().
Además y al igual que antes, existen funciones similares a
strpos() y
strstr() pero que son insensibles a mayúsculas y minúsculas. Estas son, respectivamente,
stripos() y
stristr().
También es posible indicar a PHP que empiece a buscar
desde el final del string en lugar de hacerlo desde el principio, para ello hay que utilizar la función
strrpos().
Ver ejemplo de código
La función más simple para
buscar y reemplazar en un
string es
str_replace(), así como su variante insensible a mayúsculas y minúsculas
str_ireplace(), bien pasando
strings sencillos de búsqueda y reemplazo o
arrays de
strings para realizar varios reemplazos simultáneos. Además, es posible añadir un cuarto parámetro que nos da la cantidad de reemplazos efectuados:
Ver ejemplo de código
Y como avanzamos antes, es posible utilizar la función
susbtr_replace() combinándola con
strpos() para reemplazar parte de una aguja que encontremos a partir de una determinada ocurrencia, por ejemplo:
Ver ejemplo de código
Para terminar, existe una función, llamada
substr(), que permite extraer parte de un
string, algo realmente útil y necesario en muchas situaciones. Funciona con tres parámetros: el
string de entrada, la posición desde el inicio (o desde el fin si es un número negativo) y, de manera opcional, la longitud:
Ver ejemplo de código
Otras funciones
Además de las citadas anteriormente, existen muchas más funciones en PHP para trabajar con
strings. Todas ellas están disponibles en la
documentación oficial de PHP y muchas de ellas serán necesarias para resolver los ejercicios planteados a continuación.
Ejercicios propuestos
- Muestra por pantalla el texto: El comando c:\*.* no es correcto y en mi reloj son la 12 "o'clock".
- Escribe tu nombre completo y dos apellidos en una línea. En la siguiente, sustituye las vocales e,i,o por los números 3,1,0, respectivamente. Si hay alguna 's', sustitúyela por el número '5'.
- Escribe tu nombre completo y dos apellidos en una línea. En la siguiente, sustituye todas tildes y diéresis (si las hay) por su correspondiente vocal sin tilde ni diéresis. Si alguna 'ñ', sustitúyela por una 'n'.
- Escribe una función que transforme una frase a mayúsculas
- Escribe una función que transforme una frase a minúsculas
- a. Escribe una función que transforme la primera letra de una frase a mayúsculas. b. Modifica la anterior para que transforme la primera letra de la frase a minúsculas
- Escribe una función que transforme la primera letra de cada palabra de una frase a mayúsculas
- Escribe una función que convierta el string 15061974 en 15/06/1974
- Escribe una función que extraiga el nombre del fichero de una ruta (Ejemplo, 'http://www.jairogarciarincon.com/carpeta1/index.php' debe devolver 'index.php'.
- Escribe una función que extraiga el nombre de usuario de una dirección de email (Ejemplo jairo@garciarincon.com debe devolver jairo)
- Escribe una función que devuelva la letra o número siguiente al introducido (Ejemplo, si la muestra es 'a', debe devolver 'b'. Si la muestra es '4', debe devolver '5').
- Escribe una función que devuelva la primera palabra de una frase.