Ver Mensaje Individual
  #14 (permalink)  
Antiguo 05/05/2007, 12:16
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: Remarcar palabras en una búsqueda

En ese caso, para no complicar las cosas, podrías probar así:
Código PHP:
<?php
    
include('bdconex.php'); // Este archivo contiene los datos de conexión a la BD
    
    // creamos una función que resaltará todas las palabras que coincidan con la búsqueda realizada
    
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) {
         return 
str_ireplace($palabra,'<strong>'.$palabra.'</strong>',$texto);
    }
    
    
// 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 "noticias";
            
$campo "titulo";
            
            
// 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 encontrada
            
$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"];
                    
//$pal = array($palabra);
?>            
                <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
    
}
?>
La desventaja es que no se conserva el formato original de la cadena. Igual, se podría modificar la otra función para que haga todos los reemplazos manteniendo la palabra en el formato original, sólo que ahora no tengo tiempo como para ver cómo lograrlo ;)