Era un día soleado con una Coca Cola en el escritorio. Me veía envuelto en un proyecto interesante de un buscador de música y para el susodicho, necesitaba una función que me permita resaltar las busquedas (palabras) que entraban y luego obtener un resultado algo como éste ejemplo:

Vamos a ponernos en el caso que buscamos la canción «Adiós» y obtenemos una lista de artistas que tienen una canción con el mismo nombre. Para ésto, necesitaba resaltar la palabra que se había buscado; es decir: si la canción se llama «Tu Adiós» debería de mostrar en negritas (ésto es opcional) sólo la palabra «Adiós«.

buscar palabra php

Bien, buscando en nuestro queridísimo Google, encontré una solución que era básicamente reemplazar y mostrar el dato que necesitaba. Les comparto un código, que está entre los helpers de CodeIgniter, que hace exactamente lo que buscas (asumo que por ello llegaste a este post, ¿verdad?).

Resaltar palabras de una cadena

function resaltar_frase($string, $frase, $taga = '<b>', $tagb = '</b>')
{
return ($string !== '' && $frase !== '')
? preg_replace('/('.preg_quote($frase, '/').')/i'.('true' ? 'u' : ''), $taga.'\\1'.$tagb, $string)
: $string;
}

$frase = 'hola, esta es una prueba de hola. vamos a ver si funciona o no';
echo resaltar_frase($frase,'hola');

//Esto devolverá: <b>hola</b>, esta es una prueba de <b>hola</b>. vamos a ver si funciona o no

Para explicar rápidamente la función (me he comido muchas líneas de recuerdos), lo que hace es reemplazar a través de expresiones regulares el contenido que necesitamos. Por ejemplo, estamos enviando 2 parámetros principales: La frase completa y posteriormente, la palabra a «resaltar». Los siguientes 2 parámetros, son para dar etiquetas opcionales como ‘<mark>’ o ‘<h3>’, etc.

Esta función, está sencilla y por ello quería compartirlo con ustedes por si se encontraban buscándola.

Williams Azabache Sarmiento

Que puedo decir...