Foros del Web » Programando para Internet » PHP »

Cadena buscada ponerla en negrita

Estas en el tema de Cadena buscada ponerla en negrita en el foro de PHP en Foros del Web. Hola amigos, ya conseguí mi propio buscador mediante against y match ( http://www.forosdelweb.com/showthread.php?t=420336 ), ahora lo que queria es, que la palabra(s) buscada, aparezcan en ...
  #1 (permalink)  
Antiguo 28/08/2006, 04:21
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
Cadena buscada ponerla en negrita

Hola amigos, ya conseguí mi propio buscador mediante against y match (http://www.forosdelweb.com/f18/crear-buscador-420336/), ahora lo que queria es, que la palabra(s) buscada, aparezcan en negrita, como en muchos buscadores, como el Google.
__________________
Saludos!
  #2 (permalink)  
Antiguo 28/08/2006, 04:25
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
una manera sería con str_replace:

$nuevacadena="<b>".$cadenabuscada."</b>";
srt_replace($cadenabuscada,$nuevacadena);

supongo que habrá mas.. pero esa es bastante sencilla no?
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 28/08/2006, 04:34
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
Si, pero...

Si busco "juegos"... genial, pero si busco juegos locos, si la cadena no es exacta y las palabras no estan en ese orden no me coloreará en negrita, suponiendo que la descripcion es:

Muchos juego y ademas locos....

Quiero que me ponga....

Muchos juego y ademas locos....

Gracias!
__________________
Saludos!
  #4 (permalink)  
Antiguo 28/08/2006, 04:46
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
mm en ese caso la cadena de busqueda sería "juegos locos" o "juegos_locos" con un separador usado por ti..
si hacemos un explode de esa cadena por el separador obtenemos en un array todas las palabras buscadas:

$palabrasbusqueda="juego_locos";
$palabras = explode ("_",$palabrasbusqueda);

el resultado sería $palabras[0]="juego"; y $palabras[1]="locos";

si ahora recorres el array y reemplazas...

for ($i=0; $i<count($palabras);$i++)
{
$nuevacadena="<b>".$palabras[$i]."</b>";
srt_replace($palabras[$i],$nuevacadena,$cadenacompleta);
//antes me faltó lo de $cadenacompleta (la cadena donde se buscan las palabras
}


resumiendo:
Código PHP:
$palabrasbusqueda="juego_locos";
$palabras explode ("_",$palabrasbusqueda);
for (
$i=0$i<count($palabras);$i++)
{
  
$nuevacadena="<b>".$palabras[$i]."</b>";
  
srt_replace($palabras[$i],$nuevacadena,$cadenacompleta);

creo que de esa forma ya estaría.. pruebalo a ver..
__________________
ALOZORRO v5.0 (ahora en .es)
  #5 (permalink)  
Antiguo 28/08/2006, 05:00
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
No me sale chico...

Tengo lo siguiente:


Código PHP:
    $resultado_busqueda $miconexion -> consulta ("SELECT id, titulo, cabecera, MATCH(titulo,cabecera) AGAINST('$cadena') AS relevancia FROM tutoriales WHERE MATCH(titulo,cabecera) AGAINST('$cadena')");
    
$resultados_consulta $miconexion -> numeroRegistros (); 
Código PHP:
        $cuenta_listado 1;
        while ( 
$campo mysql_fetch_array ($resultado_busqueda) ) {
        
             
$cadena_busqueda str_replace (" ","_"$cadena);
             
$palabras explode ("_"$cadena_busqueda);
             
             for ( 
$i 0$i count ($palabras); $i++ )
                 {
                
$nuevacadena "<b>".$palabras[$i]."</b>"
                
str_replace ($palabras[$i], $nuevacadena$cadena); 
                }
            
             echo 
'<tr>';
             echo 
'     <td>';
             echo 
'<strong>'.$cuenta_listado.'.</strong>';
             echo 
'     </td>';
             echo 
'     <td>';
             echo 
'<a href = "#">'.$campo ["titulo"].'</a> [Relevancia:'.$campo ["relevancia"].']';
             echo 
'     </td>';
             echo 
'</tr>';
             echo 
'<tr>';
             echo 
'     <td>';
             echo 
' ';
             echo 
'     </td>';
             echo 
'     <td>';
             echo 
''.$campo ["cabecera"].'<br><br>';
             echo 
'     </td>';
             echo 
'</tr>';
             
$cuenta_listado++;
            } 
A ver que hago mal :S
__________________
Saludos!
  #6 (permalink)  
Antiguo 28/08/2006, 05:28
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
Código PHP:
$cuenta_listado 1
        while ( 
$campo mysql_fetch_array ($resultado_busqueda) ) { 
         
         
//aqui tienes que sacar la cadena del array:
         //$cadena = $campo['la_cadena'];
        //no se como lo llamaste en la base de datos, sustituyes la_cadena por lo que tenga que ser.

             
$cadena_busqueda str_replace (" ","_"$cadena); 
             
// esto ^ no hace falta, en el explode puedes hacerlo con " " (el espacio) y te evitas una consulta..
             
$palabras explode ("_"$cadena_busqueda); 
              
             for ( 
$i 0$i count ($palabras); $i++ ) 
                 { 
                
$nuevacadena "<b>".$palabras[$i]."</b>";  
                
str_replace ($palabras[$i], $nuevacadena$cadena);  
                } 
             
             echo 
'<tr>'
             echo 
'     <td>'
             echo 
'<strong>'.$cuenta_listado.'.</strong>'
             echo 
'     </td>'
             echo 
'     <td>'
             echo 
'<a href = "#">'.$campo ["titulo"].'</a> [Relevancia:'.$campo ["relevancia"].']'
             echo 
'     </td>'
             echo 
'</tr>'
             echo 
'<tr>'
             echo 
'     <td>'
             echo 
' '
             echo 
'     </td>'
             echo 
'     <td>'
             echo 
''.$campo ["cabecera"].'<br><br>'
             echo 
'     </td>'
             echo 
'</tr>'
             
$cuenta_listado++; 
// y por aqui tendrás que hacer el echo de la cadena (echo $cadena)
            

te puse comentarios a tu codigo, te faltaba sacar la cadena de la consulta para trabajar con ella.. y en la tabla no mostrabas dicha cadena..
__________________
ALOZORRO v5.0 (ahora en .es)
  #7 (permalink)  
Antiguo 28/08/2006, 05:56
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 12 años, 7 meses
Puntos: 0
Percfecto, me funciona genial, al final quedó la cosa:

Código PHP:
        <?
        $cuenta_listado 
1;
        while ( 
$campo mysql_fetch_array ($resultado_busqueda) ) {  
          
         
$cabecera_final $campo["cabecera"]; 

             
$cadena_busqueda str_replace (" ","_"$cadena);  
             
$palabras explode ("_"$cadena_busqueda);  
               
             for ( 
$i 0$i count ($palabras); $i++ )  
                 { 
                 
$nuevacadena "<b>".$palabras[$i]."</b>";   
                 
$cabecera_final str_replace ($palabras[$i], $nuevacadena$cabecera_final);   
                 }  
              
             echo 
'<tr>';  
             echo 
'     <td>';  
             echo 
'<strong>'.$cuenta_listado.'.</strong>';  
             echo 
'     </td>';  
             echo 
'     <td>';  
             echo 
'<a href = "#">'.$campo ["titulo"].'</a> [Relevancia:'.$campo ["relevancia"].']';  
             echo 
'     </td>';  
             echo 
'</tr>';  
             echo 
'<tr>';  
             echo 
'     <td>';  
             echo 
' ';  
             echo 
'     </td>';  
             echo 
'     <td>';  
             echo 
''.$cabecera_final.'<br><br>';  
             echo 
'     </td>';  
             echo 
'</tr>';  
             
$cuenta_listado++;  
            }
        
?>
Gracias y un saludo
__________________
Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:16.