25, junio - 2018

Buscar y reemplazar cadenas de texto con PHP

Buscar y reemplazar cadenas de texto con PHP

Es muy habitual tener que comprobar si una subcadena se encuentra presente en el interior de otra de mayor tamaño. También, tener que reemplazar parte de una cadena de texto por otra o por un fragmento de menor tamaño. Del mismo modo, es mucho mejor en cuanto al rendimiento del sistema, hacer una comprobación de búsqueda que una de igualdad. A PHP le resulta más sencillo ver si un fragmento de texto está presente en otro, que ver si un determinado texto es igual a otro, cosa que vimos en la página comparar cadenas en PHP. En esta página vamos a ver qué funciones tenemos disponibles para realizar operaciones de búsqueda de textos y de reemplazamiento de los mismos.

Buscar cadenas de texto en subcadenas mediante strstr(), strchr(), strrchr() y string()

Las cuatro funciones se usan para la misma labor, la de buscar si un fragmento de texto o un solo carácter, se encuentra presente dentro de una cadena más grande. Si lo que queremos es buscar una cadena de más de un carácter, debemos usar la función strstr(). Si la búsqueda es de un solo carácter usaríamos strchr(). Lo que hacen es, buscar si coinciden los parámetros marcados dentro de la cadena, y en caso de existir, devolver el resto de cadena desde ese mismo parámetro. Estas funciones también se podrían usar para sustituir o borrar parte de la cadena original, siempre y cuando se conozcan de antemano las dos cadenas, la que se busca y en la que se está buscando. Vemos algunos ejemplos.

///////////////////////////////////////////
$cad = "direcciondecorreo@electronico.com";
$bus = "correo";
echo strstr($cad, $bus);
/** RESPUESTA */
// correo@electronico.com
// Corta desde la primera aparición del carácter a buscar
$cad = "direcciondecorreo@electronico.com";
$bus = "@";
echo stristr($cad, $bus);
/** RESPUESTA */
// @electronico.com
// Corta desde la primera aparición del carácter a buscar
$cad = "direcciondecorreo@electronico.com";
$bus = "i";
echo strrchr($cad, $bus);
/** RESPUESTA */
// ico.com
// Corta desde la última aparición del carácter a buscar
///////////////////////////////////////////

Nota: Estas funciones hacen distinción entre mayúsculas y minúsculas de tal manera que ‘esta’, será diferente a ‘Esta’. También dependiendo del comportamiento que deseemos que realice, debemos usar unas u otras, siendo strstr() las más habitual y sencilla cuando tenemos que optar por este conjunto de funcionalidades.

Comprobar la posición que ocupa una subcadena dentro de otra con strpos() y strrpos()

De manera alternativa. Podemos comprobar qué posición ocupa una cadena dentro de otra y con ello, optar por un modo alternativo de comprobación. El uso de estas dos funciones es muy similar, con diferencia de que con strpos() nos va a devolver la posición que ocupa dentro de la cadena comenzando por la primera coincidencia que encuentre, y con strrpos() nos va a dar el resultado de la posición que ocupa la cadena a buscar pero en la última posición que se encuentre la r extra proviene de right (derecha). Lo que indica que la comprobación la realizará sobre la posición más cercana a ese lado, al lado derecho. Vemos su uso a continuación.

///////////////////////////////////////////
$cad = "direcciondecorreo@electronico.com";
$bus = "i";
echo strpos($cad, $bus);
/** RESPUESTA */
// 1
// La primiera coincidencia de una letra i es en la posición número 1
$cad = "direcciondecorreo@electronico.com";
$bus = "i";
echo strrpos($cad, $bus);
/** RESPUESTA */
// 26
// La última coincidencia de una letra i es en la posición 26
///////////////////////////////////////////

Nota: Como podemos ver, la numeración comienza por el número cero, de ahí que en primer ejemplo, la posición de la i sea de 1, ya que comienza como hemos dicho por el número cero.

Contar el número de veces que se repite una cadena dentro de otra con substr_count()

Puede que lo que necesitemos sea contar el número de veces que una cadena se repite dentro de otra, ésto se podría hacer programando una función que por ejemplo, transformase la cadena en un array y de ahí comprobara el número de veces que se repite un determinado texto. Pero es mucho más sencillo con esa simple función, y una sola línea de código. Veamos cómo.

///////////////////////////////////////////
$cad= "Esta es la cadena en la que vamos a buscar las letras zz";
echo substr_count($cad, "z");
/** RESPUESTA */
// 2
///////////////////////////////////////////

Sustitución de parte de cadenas con str_replace() y strtr()

Estas dos funciones son muy útiles cuando tenemos plantillas de datos o cadenas de texto, ya que nos van a permitir sustituir determinadas partes por datos concretos, como puedan ser //nombre// //apellidos// //dirección// etc… También puede ser utilizada para suprimir determinados textos que no deseemos que estén presentes dentro de nuestros contenidos.

///////////////////////////////////////////
$cadena = "Estimado //nombre// //apellidos//.\r\n Nos ponemos en contacto contigo para informarte de //info//";
$claves = array("//nombre//", "//apellidos//", "//info//");
$datos = array("Eduardo", "González", "nuestra nueva política de privacidad.");
echo str_replace($claves, $datos, $cadena);
/** RESPUESTA */
/**
Estimado Eduardo González.
Nos ponemos en contacto contigo para informarte de nuestra nueva política de privacidad
*/
$cadena = "Hay determinadas palabrotas que no deben mostrarse por ser palabrotas de mal gusto para los visitantes";
$sustracciones = array("palabrotas" => "XXXXXXX", "gusto" => "___________");
echo strtr($cadena, $sustracciones);
/** RESPUESTA */
// Hay determinadas XXXXXXX que no deben mostrarse por ser XXXXXXX de mal ___________ para los visitantes
///////////////////////////////////////////

Nota: Como vemos estas funciones pueden ser muy útiles a la vez que divertidas, existen varias variantes de las mismas. Algunas para hacer distinción entre mayúsculas y minúsculas. Por ejemplo con str_ireplace podemos lograr lo mismo que con str_replace pero sin que haga distinción entre las mayúsculas y las minúsculas.

¿Te ha parecido interesante este contenido..?
En ese caso, te pedimos por favor que nos des tu valoración graicas a esto podemos mejorar nuestras lecciones. Gracias.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Social Media

  • YouTube

    Suscríbete a nuestro canal de YouTube para ver todos nuestros vídeos sobre programación

  • Twitter

    Síguenos en Twitter e infórmanos de ello, es muy probable que también te sigamos

  • Facebook

    Estamos pensando si abrir una página de Facebook o no...

  • LinkedIn

    En breve...

  • Instagram

    En breve...

  • Github

    En breve...

A %d blogueros les gusta esto: