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«.
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.