sábado, 4 de septiembre de 2010

Funciones prácticas para manipular cadenas con PHP

La manipulación de cadenas de texto es una de las tareas más comunes a la hora de trabajar con PHP. Este lenguaje incorpora de forma nativa un buen número de funciones que nos facilitan enormemente el manejo de strings. Vamos a repasar algunas de estas las funciones para manipular cadenas más comunes.

Función Descripción
strtoupper() Convierte la cadena pasada como parámetro en mayúsculas.
strtolower() Convierte la cadena en minúsculas.
ucfirst() Pone en mayúsculas el primer carácter de la cadena.
ucwords() Pone en mayúsculas la primera letra de cada palabra.
addslashes() Escapa carácteres especiales agregando la barra invertida correspondiente.
stripslashes() Elimina las barras de escape.

Ejemplos de uso de otras funciones.

//substr() retorna una subcadena a partir
//de los puntos indicados como parámetro incial y final
$var = substr("hola que tal", 1);
//devuelve
ola que tal

//si el valor inicio es negativo
//devuelve la parte final de la cadena
//con los caracteres indicados
substr("hola que tal", -3);
//devueve
tal

//el parámetro longitud sirve para
//indicar el número de carácteres a devolver
//si es positivo o la posición final de la
//secuencia de retorno si es negativo
substr("hola que tal", 0, 4);
//devuelve
hola
substr("hola que tal", 0, -4);
//devuelve
hola que

Para buscar subcadenas dentro de otras cadenas utilizamos strstr(), que espera que le pasemos 2 parámetros, primero el texto donde buscar y segundo el texto buscado. Devuelve el texto pasado como parámetro número 1 desde la posición donde se haya encontrado la cadena buscada o false en caso de no encontrarla.

$cadena = "En un lugar de la mancha";
echo strstr($cadena, "lugar");
//devuelve
lugar de la mancha

Para obtener la posición de una subcadena utilizaremos strpos() y strrpos() que funcionan básicamente igual que strstr() con la diferencia de que en lugar de devolver una subcadena devuelve su posición numérica.

$cadena = "En un lugar de la mancha";
echo strpos($cadena, "un");
//imprime 3 ya que 3 es la
//posición que ocupa "un" en la
//cadena principal

//podemos emplear un tercer parámetro
//que sirve para indicar la posición
//a partir de la cual comenzamos a buscar
echo strpos($cadena, "n", 3);
//devuelve 4 ya que no se ha tenido en cuenta
//la primera n de "En"

La función strrpos() realiza la misma tarea pero retorna la posición de la última coincidencia en lugar de la primera. Estas dos funciones devolverán false si no encuentran la subcadena buscada. Importante: utilizar comparaciones estrictas y el operador === para evitar falsos positivos.