Ver Mensaje Individual
  #9 (permalink)  
Antiguo 05/05/2007, 11:19
Avatar de ZydRick
ZydRick
 
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 21 años, 8 meses
Puntos: 4
Re: Remarcar palabras en una búsqueda

Hola panino, añadí la función que pusiste en el script pero sigue sin funcionar, ahora ya no resalta nada, mira aquí dejo el script.

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) {
        
$reemp=str_ireplace($palabra,'%s',$texto);
        
$ub=strpos($reemp,'%s');
        if(
$ub===false)return $texto;
        
$pal_original=substr($texto,$ub,strlen($palabra));
        return 
sprintf($reemp,'<strong>'.$pal_original.'</strong>');
    }
    
    
// 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($pal, $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
    
}
?>
No sé donde puede estar el fallo. gracias por tu ayuda.

Saludos.