Funciones de Cadena

Funciones cadenas PHP

 

 

Funciones basicas en Php

Para la manipulación de las variables o cadenas de caracteres nos será útil conocer las funciones básicas de manipulación. No vamos a entrar a describir cada una de las funciones para cadenas de caracteres que PHP posee, que son muchas. Simplemente veremos las más básicas y de uso más común.

 

 

Funcion STRLEN

La función strlen obtiene la longitud de una cadena y devuelve un número entero. Es decir, obtenemos el número de caracteres que forman la cadena completa.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$cad = "cadena"; //Prueba a cambiar el texto cadena por otro

$n = strlen($cad);

echo "La longitud de la cadena es: $n";

?>

 

 

 

FUNCIÓN SUBSTR

La función substr devuelve una subcadena de la cadena original, es decir, una parte de la cadena original. Esta función tiene 3 parámetros:

  1. La variable que contiene la cadena.

  2. Número que representa la posición (inclusive) en la que comenzará a ser extraída la subcadena.

  3. Número que indica la cantidad de caracteres que serán extraídos. Este argumento es opcional. Si se omite se tomará hasta el final de la cadena original.

 

Tener en cuenta que la numeración de la posición de los caracteres empieza por cero. Por ejemplo para la cadena 'GPS', que tiene 3 caracteres, el carácter en posición 0 es G, en posición 1 es P y en posición 2 es S. No existe la posición 3 debido a que se comienza a contar por el cero.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$cad = "cadena";

$sub1 = substr($cad, 2);

$sub2 = substr($cad, 2, 2);

echo "La subcadena número uno es la siguiente: $sub1 <br />";

echo "La subcadena número dos es la siguiente: $sub2";

?>

 

 

 

Escribe este otro ejemplo y visualízalo en tu navegador (nota: & nbsp; representa un espacio en blanco):

<?php

$cad = "aprenderaprogramar.com";

$sub1 = substr($cad, 0); //La cadena completa

$sub2 = substr($cad, 0, 8); //La subcadena aprender

$sub3 = substr($cad, 8, 1); //La subcadena a

$sub4 = substr($cad, 9); //La subcadena programar

echo "& nbsp; & nbsp; La subcadena número uno es la siguiente: $sub1 <br />";

echo "& nbsp; & nbsp; La subcadena número dos es la siguiente: $sub2 <br />";

echo "& nbsp; & nbsp; La subcadena número tres es la siguiente: $sub3 <br />";

echo "& nbsp; & nbsp;La subcadena número cuatro es la siguiente: $sub4";

?>

 

 

 

Fíjate en las siguientes cuestiones:

a) La numeración de caracteres empieza en cero y no en uno. Así en este último ejemplo el caracter 0 es la a, el 1 la p, el 2 la r, el 3 la e y así sucesivamente.

b) La posición en que comienza la extracción va incluida en la subcadena extraida. Esto significa que substr ($cad, 0, 1) significa que sólo se extrae el primer caracter de la cadena.

 

 

Función STR_REPLACE

Esta función se utiliza para reemplazar caracteres dentro de una cadena de caracteres. Es decir, nos permite definir una cadena que debe ser reemplazada con otra dentro de una frase o palabra. La función devuelve la frase original con todas las apariciones de la cadena a buscar reemplazadas con una cadena de reemplazo especificada.

La sintaxis básica habitual para esta función es:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)

 

 

Veámoslo con un ejemplo para entenderla mejor. Escribe este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones básicas cpcppw.es

$texto = "Donde dije digo digo Diego.";

echo str_replace("Diego", "recortes", $texto);

echo "<br />";

echo $texto;

?>

 

 

 

Como podemos observar, en la cadena de caracteres $texto, hemos sustituido la palabra o conjunto de caracteres "Diego" por "Recortes" y hemos devuelto el resultado sin modificar la variable de entrada.

Fíjate que en el código que hemos escrito no hemos reemplazado el valor de la variable $texto por un nuevo contenido. Unicamente hemos impreso por pantalla el resultado que nos devuelve la función. Si hubiéramos escrito lo siguiente sí hubiéramos cambiado el contenido de la variable: $texto = str_replace("Diego", "recortes", $texto);

La función permite pasar opcionalmente un parámetro adicional que permite saber a posteriori el número de reemplazos que se han realizado:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal, $numReemplazos)

 

 

Veámoslo con un ejemplo para entenderlo mejor:

<?php //Ejemplo funciones básicas cpcppw.es

$texto = "El dijo: es tarde ahora, pero es mejor si hay tres";

echo str_replace("es", "**", $texto, $reemplazos );

echo '<br/>Se han realizado: '.$reemplazos. ' reemplazos<br/>';

echo $texto;

?>

 

 

El resultado esperado es: El dijo: ** tarde ahora, pero ** mejor si hay tr**, Se han realizado: 3 reemplazos, El dijo: es tarde ahora, pero es mejor si hay tres

Fíjate que se reemplaza la cadena "es" indistintamente según esté separada por espacios o dentro de una palabra. Si sólo quisiéramos reemplazar la cadena si está separada por espacios podríamos indicar los espacios dentro de la cadena: echo str_replace(" es ", " ** ", $texto, $reemplazos );

Aquí hemos indicado que se reemplace espacio-e-s-espacio con espacio-*-*-espacio.

Si fuera necesario establecer reglas complejas de reemplazo, por ejemplo “reemplazar todas las palabras que empiecen por a y terminen por a con otra palabra, tendríamos que usar lo que se denominan expresiones regulares, pero no vamos a estudiar ahora la forma de definir y emplear expresiones regulares con PHP.

 

 

Funciones STRTOLOWER Y STRTOUPPER

Las funciones strtolower y strtoupper transforman una cadena de caracteres en la misma cadena en minúsculas o mayúsculas respectivamente. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones básicas cpcppw.es

$cadena = "EstO eS UnA cadeNA de CARActeres";

echo strtolower($cadena);

echo "<br />";

echo strtoupper($cadena);

?>

 

 

 

Como vemos el comportamiento de las funciones es sencillo. Simplemente devuelven la cadena de caracteres pasada como argumento en minúsculas o mayúsculas respectivamente.

Ten en cuenta que muchas veces para realizar comparaciones o para almacenar datos será interesante uniformizar la información que se almacena. Por ejemplo, si se pide una ciudad, un usuario puede introducir Buenos Aires, otro Buenos aires, otro BUENOS AIRES. Si usamos estas funciones, podemos uniformizar y hacer que siempre se muestren o guarden de una misma manera, lo cual facilitará el trabajo posterior.

 

 

Funciones COUNT_CHARS Y SUBSTR_COUNT

La función count_chars sirve para contar el número de apariciones de un carácter en una cadena.

 La sintaxis a emplear es la siguiente:

count_chars ( $cadena, $opcModo)

 

 

$opcModo es un entero opcional. Si no se especifica vale 0 por defecto. Sus valores admitidos son:

0: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter ascii como valor.

1: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter que aparezca al menos una vez como valor.

2: se devolverá un array de caracteres que no aparecen en la cadena, con el valor numérico ascii como índice y la frecuencia de cada carácter ascii que no aparece como valor.

3: devuelve una cadena que contiene todos los caracteres únicos.

4: devuelve una cadena que contiene todos los caracteres no utilizados.

 

Nota: los códigos numéricos ascii van de 0 a 255 y no todos son visibles por pantalla.

Ejemplo:

<?php //Ejemplo count_chars cpcppw.es

$cadena = 'es jueves';

$miArray = count_chars ( $cadena, 1);

foreach ($miArray as $indiceNum => $veces) {

   echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces<br/>';

}

?>

 

 

El resultado esperado es: Letra: , encontrada 1 veces. Letra: e , encontrada 3 veces. Letra: j , encontrada 1 veces. Letra: s , encontrada 2 veces. Letra: u , encontrada 1 veces. Letra: v , encontrada 1 veces

 

Otra función útil es substr_count($cadena, $subcadena). Esta función nos devuelve el número de veces que aparece la subcadena dentro de la cadena. Por ejemplo:

<meta charset="utf-8">

<?php //Ejemplo curso PHP cpcppw.es

$cadena1 = 'Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro';

$cadena2 = 'Luis';

echo 'Luis aparece '.substr_count($cadena1, $cadena2). ' veces'

?>

 

El resultado esperado es <<Luis aparece 3 veces>>

 

 

Otras funciones para cadenas

PHP define numerosas funciones nativas para el manejo de cadenas de texto. Vamos a ver algunas de ellas:

FUNCIÓN

UTILIDAD

EJEMPLOS cpcppw.es

strlen($cadena)

Devuelve la longitud o número de caracteres de la cadena

$cad = "cadena"; //Prueba a cambiar el texto cadena por otro $n = strlen($cad); echo "La longitud de la cadena es: $n";

substr ($cadena, $inicio, $opcNumCar)

Si no se especifica $opcNumCar devuelve la subcadena entre la posición $inicio y el fin de cadena siendo la posición inicial la cero. Si se especifica $opcNumCar extrae $opcNumCar caracteres desde la posición $inicio (inclusive).

$cad = "cadena"; $sub1 = substr($cad, 2); $sub2 = substr($cad, 2, 2); echo "La subcadena número uno es la siguiente: $sub1
"; echo "La subcadena número dos es la siguiente: $sub2";

ucfirst($cadena);

Devuelve la cadena con la primera letra en mayúsculas

$saludo = "hoy es viernes";

ucfirst($saludo);

//Hoy es viernes

ucwords($cadena);

Devuelve la cadena con cada una de sus palabras con la primera letra en mayúsculas

$saludo = "hoy es viernes";

echo ucwords($saludo);

//Hoy Es Viernes

strpos ($cadena , $subCadena, $opcPosInicio )

Devuelve la posición en que comienza la subcadena a partir de la posición inicial (cero) si no se especifica $opcPosInicio, o a partir de la posición $opcPosInicio si se especifica. Si no se encuentra la subcadena devuelve false.

$saludo = "hoy es viernes";

echo strpos($saludo, "es");

//4

trim ($cadena, $opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del principio y final de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.

$saludo = "*** hoy es viernes ***";

echo trim($saludo, "*");

//hoy es viernes

Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor.

ltrim ($cadena, $opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del principio de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.

$saludo = "*** hoy es viernes ***";

echo ltrim($saludo, "*");

//hoy es viernes ***

Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor.

rtrim ($cadena, $opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del final de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.

$saludo = "*** hoy es viernes ***";

echo rtrim($saludo, "*");

//*** hoy es viernes

Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor.

chop

Igual que rtrim

 

str_repeat($cadena, $numVeces)

Devuelve la cadena repetida $numVeces siendo éste un número entero.

$saludo = 'hola ';

str_repeat($saludo, 3);

//hola hola hola

strstr ($cadena, $desde, $opcBoolean)

Devuelve la subcadena desde la primera aparición de $desde (incluida) hasta el final si no se especifica opcBoolean ó este es false. Si $opcBoolean es true devuelve la subcadena desde el inicio hasta la primera aparición de $desde (excluida).

$saludo = "hoy es viernes";

echo strstr($saludo, "es", false);

//es viernes

strchr

Igual que strstr

 

chr ($ascii)

Devuelve el carácter correspondiente al código numérico entero $ascii según el código ascii

echo chr(65). ' es la salida';

// A es la salida

 

 

Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya que algunas son para tareas muy específicas. No te preocupes por memorizar las funciones ni por conocerlas todas, simplemente sé consciente de su existencia y aprende a buscarlas cuando te resulten necearias. Si en algún momento necesitas realizar tareas muy específicas con cadenas en PHP puedes conocer todas las funciones existentes sobre cadenas acudiendo a la documentación oficial de PHP sobre funciones de cadenas, disponible en http://php.net/manual/es/ref.strings.php