Foros del Web » Programando para Internet » PHP »

obtener la palabra buscada del texto original..

Estas en el tema de obtener la palabra buscada del texto original.. en el foro de PHP en Foros del Web. Buenas nose si el titulo es muy descriptivo, pero bueno lo q necesito es lo siguiente: tengo una funcion para colorear la palabra buscada por ...
  #1 (permalink)  
Antiguo 18/12/2009, 10:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 190
Antigüedad: 15 años, 4 meses
Puntos: 6
obtener la palabra buscada del texto original..

Buenas nose si el titulo es muy descriptivo, pero bueno lo q necesito es lo siguiente:
tengo una funcion para colorear la palabra buscada por un usuario en mi web...
si tengo una noticia con la cadena "hola que tal" y el usuario busca en noticias
HoLa (distinguir mayusculas y minusculas) en los resultados se muestra asi:
HoLa que tal ...
y necesito q sea vea como era el original (todo en minusculas) .. lo mismo para el caso inverso si esta en mayusculas...
Yo para reemplazar hago lo siguiente (de una funciond e cake php, si consideran necesario la pego entera) :
Código PHP:
                            $highlighter '<span class="resaltar">'.$phrase.'</span>';
                            
                return 
eregi_replace($phrase$highlighter$text); 
Gracié
  #2 (permalink)  
Antiguo 18/12/2009, 10:19
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: obtener la palabra buscada del texto original..

En el fondo lo que tienes que revisar es la variable $phrase que debe ser con unos caracteres extraños si es que nunca lo habias ulitilizado, si lo haz usado sabras que esa variable es la "pattern" o el "patron" para la busqueda y reemplazo.

Pon eso para que podamos entender que reemplazo esta haciendo la funcion.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 18/12/2009, 10:33
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: obtener la palabra buscada del texto original..

Código PHP:
$texto preg_replace('/('.$palabraBuscada.')/mi'"<span class=\"resaltado\">\\1</span>"$textoOriginal); 
No garantizo que funcione, no lo probé. ¡Suerte!
  #4 (permalink)  
Antiguo 18/12/2009, 10:36
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: obtener la palabra buscada del texto original..

Cita:
Iniciado por dggluz Ver Mensaje
Código PHP:
$texto preg_replace('/('.$palabraBuscada.')/mi'"<span class=\"resaltado\">\\1</span>"$textoOriginal); 
No garantizo que funcione, no lo probé. ¡Suerte!
eso deberia funcionar.. solo cambiale el /mi por /s
ya que el dijo que tenia q respetar mayuscula y minuscula.. y la s para que te reemplaze todas y no solo la primera :B
saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 18/12/2009, 10:49
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: obtener la palabra buscada del texto original..

Cita:
Iniciado por Hidek1 Ver Mensaje
eso deberia funcionar.. solo cambiale el /mi por /s
ya que el dijo que tenia q respetar mayuscula y minuscula.. y la s para que te reemplaze todas y no solo la primera :B
saludos!
Tenía entendido que con los modificadores que puse debería funcionar:
  • El "i" le dice que reemplace siempre, no importa si coinciden mayúsculas y minúsculas, pero el reemplazo lo hará por lo que vaya encontrando... sino ¿cómo haces con las expresiones regulares más complejas? En otras palabras, la "i" es sólo para que "matchee" sin distinguir mayúsculas y minúsculas.
  • El "m" es para que busque en todas las líneas (no entiendo cuál es la diferencia con el "s").
Es una expresión regular que modifiqué de un método de la clase "container" de la librería "PHPRTFLite", por eso confío en que debería funcionar. ¡Suerte!

PD: el método original de la clase:
Código PHP:
    function writeText($text, &$font, &$parFormat$replaceTags true) {                
        
$text str_replace('\\''\\\\'$text);
        
$text str_replace("\r\n""\r\n".'\par '$text);
        
        if (!empty(
$replaceTags)) {
            
//bold        
            
$text preg_replace("/<STRONG[ ]*>(.*?)<\/STRONG[ ]*>/mi""\\b \\1\\b0 "$text);
            
$text preg_replace("/<B[ ]*>(.*?)<\/B[ ]*>/mi""\\b \\1\\b0 "$text);        
            
//italic
            
$text preg_replace("/<EM[ ]*>(.*?)<\/EM[ ]*>/mi""\\i \\1\\i0 "$text);
            
$text preg_replace("/<I[ ]*>(.*?)<\/I[ ]*>/mi""\\i \\1\\i0 "$text);        
            
//underline
            
$text preg_replace("/<U[ ]*>(.*?)<\/U[ ]*>/mi""\\ul \\1\\ul0 "$text);        
            
//break
            
$text preg_replace("/<BR[ ]*(\/)?[ ]*>/mi""\\line "$text);
            
$text preg_replace("/<CHDATE[ ]*(\/)?[ ]*>/mi""\\chdate "$text);
            
$text preg_replace("/<CHDPL[ ]*(\/)?[ ]*>/mi""\\\chdpl "$text);
            
$text preg_replace("/<CHDPA[ ]*(\/)?[ ]*>/mi""\\chdpa "$text);
            
$text preg_replace("/<CHTIME[ ]*(\/)?[ ]*>/mi""\\chtime "$text);
            
$text preg_replace("/<CHPGN[ ]*(\/)?[ ]*>/mi""\\chpgn "$text);
            
$text preg_replace("/<CHPGM[ ]*(\/)?[ ]*>/mi""\\par \\page "$text);
            
            
$text preg_replace("/<TAB[ ]*(\/)?[ ]*>/mi""\\tab "$text);
            
$text preg_replace("/<BULLET[ ]*(\/)?[ ]*>/mi""\\bullet "$text);
            
            
$text preg_replace("/<PAGENUM[ ]*(\/)?[ ]*>/mi""\\chpgn "$text);
            
$text preg_replace("/<SECTNUM[ ]*(\/)?[ ]*>/mi""\\sectnum "$text);
            
            
$text preg_replace("/<LINE[ ]*(\/)?[ ]*>/mi""\\line "$text);
            
$text preg_replace("/<PAGE[ ]*(\/)?[ ]*>/mi""\\page "$text);
            
$text preg_replace("/<SECT[ ]*(\/)?[ ]*>/mi""\\sect"$text);    
        }    
                    
        
$text Util::utf8Unicode($text);        
        
//content formating
        
$content = (is_a($parFormat'ParFormat') && count($this->elements) != && empty($this->emptyPar)) ? '\par ' '';    
        
$this->emptyPar false;      
        
$content .= is_a($parFormat'ParFormat') ? $this->pard.$parFormat->getContent($this->rtf) : '';                         
        
$content .=    '{';
        if (
is_a($font'Font')) {
            
$content .= $font->getContent($this->rtf);            
        }                
        
$content .= $text.'}'."\r\n";
                
        
$this->elements[] = $content;        
    } 
  #6 (permalink)  
Antiguo 18/12/2009, 10:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: obtener la palabra buscada del texto original..

pero el pidio sin eso

Cita:
HoLa (distinguir mayusculas y minusculas) en los resultados se muestra asi:
HoLa que tal ...
m .. se usa para miltilinea pero (creo) usa mas memoria pq analiza cada linea como elemento diferente.. en cambio la s solo le dice que no se detenga en el salto de linea..

saludosss
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 18/12/2009, 11:10
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: obtener la palabra buscada del texto original..

Cita:
Iniciado por Hidek1 Ver Mensaje
pero el pidio sin eso



m .. se usa para miltilinea pero (creo) usa mas memoria pq analiza cada linea como elemento diferente.. en cambio la s solo le dice que no se detenga en el salto de linea..

saludosss
¡Gracias Hidek1!
De todos modos, creo que debe conservar el "i" si quiere que tenga este comportamiento:
Cita:
Buscar: "holA"
Texto: Cuando saludo digo "HOLA", porque al escuchar "hola" la gente presta más atención...
¡Suerte!
  #8 (permalink)  
Antiguo 18/12/2009, 12:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 190
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: obtener la palabra buscada del texto original..

Brillante! Muchas Gracias.
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 15:01.