El día de ayer se me ocurrió realizar un script para hacer búsquedas en una tabla de MySQL que permitiera resaltar las palabras ingresadas, algo parecido a lo que hacen Google y otros búscadores y pues empecé a buscar algo de información para llevarlo a cabo, sin resultados satisfactorios, claro, quizás no sea muy bueno buscando cosas, lo acepto, pero de tanto buscar me aburrí y empecé a hacer uno por mi cuenta, logré conseguir hacer algo, pero no funcionaba al 100% es decir que cuando realizaba una búsqueda me resaltaba las palabras escritas exactamente igual a como lo había escrito en el formulario de búsqueda.

Muchos expertos al leer este artículo -si es que lo llegaran a leer- dirán, pero porqué no usar la función str_ireplace() de PHP para hacerlo si esta función como lo dice el manual "devuelve una cadena o una matriz con todas las ocurrencias de busqueda en asunto (ignorando mayúsculas y minúsculas) sustituidas por el reemplazo dado". Sí, es verdad pero esa función sólo está disponible para PHP5 y mis proyectos corren en un servidor externo con PHP 4.x y pues tuve que ingeniármelas y crear una función para lograr lo que quería. Fue así que entré en ForosdelWeb.com una comunidad de desarrolladores web en la que frecuento y expuse mi duda, ahí surgió un usuario de nick panino5001 a quien también conozco de la web PHP-Hispano.NET y me ayudó a optimizar la función de resaltado de texto para obtener lo que quería con este script que ahora lo pongo a disposición de aquellos que también se encuentran buscando algo parecido.

<?php
    
include('bdconex.php'); // Este archivo contiene los datos de conexión a MySQL
    
    // Creamos una función que resaltará todas las palabras que coincidan con la búsqueda realizada. Gracias a panino5001 de forosdelweb.com por ayudarme a optimizarla
    
if(!function_exists('str_ireplace')) {
    function 
str_ireplace($search,$replace,$subject) {
    
$search preg_quote($search"/");
    return 
preg_replace("/".$search."/i"$replace$subject); } }
    
    function 
resaltar($palabra$texto) {
        
$aux=$reemp=str_ireplace($palabra,'%s',$texto);
        
$veces=substr_count($reemp,'%s');
        if(
$veces==0)return $texto;
        
$palabras_originales=array();
        for(
$i=0;$i<$veces;$i++){
              
$palabras_originales[]='<strong>'.substr($texto,strpos($aux,'%s'),strlen($palabra)).'</strong>';
              
$aux=substr($aux,0,strpos($aux,'%s')).$palabra.substr($aux,strlen(substr($aux,0,strpos($aux,'%s')))+2);
        }
        return 
vsprintf($reemp,$palabras_originales);
  } 
    
    
// iniciamos el proceso de búsqueda
    
if (isset($_POST["buscar"])) {
        if(
$_POST['palabra'] == '') {
            echo 
"No has ingresado ninguna palabra a buscar <a href='javascript:history.back()'>Regresar</a>";
        }else {
            
$tabla "nombre_tabla"// aquí pones el nombre de la tabla a la que deseas consultar
            
$campo "nombre_campo"// aquí pones el nombre del campo de la tabla a la que deseas consultar
            
            // quitamos cualquier código malicioso de $_POST['palabra']
            
$palabra stripslashes($_POST['palabra']);
            
$palabra strip_tags($palabra);
            
            
// hacemos la consulta a la base de datos según la palabra enviada
            
$query mysql_query("SELECT * FROM $tabla WHERE $campo LIKE '%".$palabra."%'");
            
$mostrar mysql_num_rows($query); // obtenemos la cantidad de coincidencias encontradas
            
if(mysql_num_rows($query) == "0") {
                echo 
"No hay coincidencias encontradas para <strong>".$palabra."</strong> <a href='javascript:history.back()'>Regresar</a>";
            }else {
?>
                Se han encontrado <strong><?=$mostrar?></strong> coincidencias para <strong><?=$palabra?></strong>
<?php            
                
while($datos mysql_fetch_array($query)) {        
                    
$str $datos["titulo"];
?>            
                <ul>
                    <li><?=resaltar($palabra$str)?></li>
                </ul>
<?php
                
}
            }
        }
    }else {
?>
    <form action="buscar.php" method="post">
        <input name="palabra" type="text" />
        <input name="buscar" type="submit" value="Enviar" />
    </form>
<?php
    
}
?>

Ahí lo tienen, lo que hace el script es realizar una búsqueda a una tabla y campo determinados y devolver los resultados encontrados con las palabras ingresadas resaltadas en negrita(también se le puede colorear) de una manera similar a los resultados de Google, es lógico que este script se puede mejorar, pero tal como está ahora funciona muy bien, agradezco nuevamente a panino5001(Forosdelweb.com) o panino(PHP-Hispano.NET) por ayudarme a optimizar la función de resaltado de texto, te pasaste brother!.