Foros del Web » Programando para Internet » PHP »

Tomar solo un trozo del articulo despues de una busqueda

Estas en el tema de Tomar solo un trozo del articulo despues de una busqueda en el foro de PHP en Foros del Web. Buenas, tengo una base de datos con artículos de gran gran tamaño en ella, hago una búsqueda y me devuelve aquellos artículos que coinciden, pero ...
  #1 (permalink)  
Antiguo 23/01/2008, 16:07
Avatar de Yagorat  
Fecha de Ingreso: marzo-2002
Ubicación: Madrid
Mensajes: 161
Antigüedad: 22 años, 1 mes
Puntos: 0
Tomar solo un trozo del articulo despues de una busqueda

Buenas, tengo una base de datos con artículos de gran gran tamaño en ella, hago una búsqueda y me devuelve aquellos artículos que coinciden, pero a la hora de mostrarlo, quiero que aparezcan una serie de caracteres delante y detrás de la palabra buscada como hace Goole, por ejemplo:

Titulo
..una breve descripción de las espadas encontradas en la batalla...

Utilizo strpos para encontrar la palabra y consigo mostrar parte de delante y parte de detrás, el problema viene cuando la palabra esta unida a una coma , a un punto o a cualquier otro signo. No se si existe una función que utilice expresiones regulares y te devuelva la posición dentro de la cadena como hace strpos.

Otra opción sería eliminar estos símbolos del texto, pero este en algunos casos quedaría ilegible.
__________________
Más sabe el diablo por viejo que por diablo.
  #2 (permalink)  
Antiguo 23/01/2008, 17:08
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 9 meses
Puntos: 35
Re: Tomar solo un trozo del articulo despues de una busqueda

Tal vez esto te sirva, estaba echadole una mirada al codigo de CodeIgniter y uno de sus helpers trae esto:

Código PHP:
function highlight_phrase($str$phrase$tag_open '<strong>'$tag_close '</strong>')
{
    if (
$str == '')
    {
        return 
'';
    }
    
    if (
$phrase != '')
    {
        return 
preg_replace('/('.preg_quote($phrase).')/i'$tag_open."\\1".$tag_close$str);
    }

    return 
$str;

Creo que es entendible como funciona, pero si no..

Código PHP:
$texto 'aqui todo el texto devuelto de la consulta etc etc etc';
$frase 'consulta';
echo 
highlight_phrase($texto$consulta); 
Saludos
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 23/01/2008, 17:49
Avatar de Yagorat  
Fecha de Ingreso: marzo-2002
Ubicación: Madrid
Mensajes: 161
Antigüedad: 22 años, 1 mes
Puntos: 0
Re: Tomar solo un trozo del articulo despues de una busqueda

Eso sirve para marcar la palabra buscada en negrita, pero el problema que yo tengo es que solo quiero mostrar unos pocos caracteres antes y después de la palabra buscada, no mostrar el texto entero que puede tener 300 o 400 palabras y después marcar la palabra en negrita. El problema que me encuentro es como buscar la palabra y conocer el sitio que ocupa si esa palabra esta unida a comas, puntos u otros símbolos. Si utilizo el método de $posicion = stripos($texto_final, $bus); me encuentra la palabra, pero si es "forzar" también me encuentra "esforzarse" y eso no me vale.
__________________
Más sabe el diablo por viejo que por diablo.
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 22:34.