Foros del Web » Programando para Internet » PHP »

Problema en función para resaltar textos

Estas en el tema de Problema en función para resaltar textos en el foro de PHP en Foros del Web. Saludos Amigos, encontre una función que me permite resaltar el color de los resultados. Pero quiero decirle que no resalte las palabras que estan en ...
  #1 (permalink)  
Antiguo 05/10/2007, 11:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 19 años, 5 meses
Puntos: 0
Exclamación Problema en función para resaltar textos

Saludos Amigos, encontre una función que me permite resaltar el color de los resultados. Pero quiero decirle que no resalte las palabras que estan en el array $no_replacements.

Esta es la función:


Código PHP:
function marker($words,$body){
    
  
$patterns = array();
    
$replacements = array();
    
$no_replacements=array("de","la""en""el""da","di","e","i");

    
    foreach (
$words as $i => $word) {
        
        
        
        
$patterns[] = '/' preg_quote($word) .'/i';
        
$replacements[] = "<span class='marker'>\\0</span>";
        
        
        
        
    }
    
//<span style=\"color:blue; background-color:yellow;\">".$arg."</span>
    // Split up the page into chunks delimited by a
    // reasonable approximation of what an HTML element
    // looks like.
    
$parts preg_split("{(<(?:\"[^\"]*\"|'[^']*'|[^'\">])*>)}",
                        
$body,
                        -
1,  // Unlimited number of chunks
                        
PREG_SPLIT_DELIM_CAPTURE);
                        
                        
    foreach (
$parts as $i => $part) {
        
// Skip if this part is an HTML element
        
if (isset($part[0]) && ($part[0] == '<')) 
         { continue; }
        
// Wrap the words with <span/>s
        
        
$parts[$i] = preg_replace($patterns$replacements$part);
    }
    
    
    
    
// Reconstruct the body
    
$body implode('',$parts);
    
    return  
$body;
    
}

Que me retorna el texto con las coincidencias resaltadas.

Un ejemplo de uso seria:

$word=array("naci","en","Ciudad");

$valor marker ($word,$bod);

echo 
$valor
agregue un if antes del foreach para verificar que exista en la cadena de no reemplazos.

Código PHP:
if (!in_array($no_replacements,$parts))                       
    {
    foreach (
$parts as $i => $part) {
        
// Skip if this part is an HTML element
        
        
        
if (isset($part[0]) && ($part[0] == '<')) 
         
        
        
        { continue; }
        
// Wrap the words with <span/>
                
        
$parts[$i] = preg_replace($patterns$replacements$part);
    
    
    
                                    }
    } 
Pero igual me sigue mostrando resaltados los valores en el array $no_replacements.

Alguien me puede indicar en que parte del codigo estoy mal?.

Gracias.
  #2 (permalink)  
Antiguo 05/10/2007, 12:06
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
Re: Problema en función para resaltar textos

Cita:
Iniciado por Marvin
Acabo de testear el codigo sin esa funcion que agregaste y me funciona de lujo.
Eso dije por no leer bien el problema... pero ya veo porque no hace nada....

Lo que podrias hacer antes de agregarle el <span></span> al texto es verificar que lo que tienes en tu variable $no_replacements no se encuentre en la variable $words... asi puedes descartar de inmediato lo de $no_replacements al marcarlo.

Algo asi:

Código PHP:
    for($a=0;$a<count($words);$a++){
        if(
in_array($words[$a],$no_replacements)){
            
$words[$a] = " ";
        }
    } 

Sorry por la respuesta anterior :P

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 05/10/2007 a las 12:28 Razón: Respondi sin leer xD
  #3 (permalink)  
Antiguo 05/10/2007, 12:13
 
Fecha de Ingreso: octubre-2007
Mensajes: 1
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Problema en función para resaltar textos

se coge el parrafo le da click en subrayado y listo






a la orden
  #4 (permalink)  
Antiguo 05/10/2007, 15:16
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Problema en función para resaltar textos

Gracias Amigo Marvin, estuve revisando la solución que me planteaste y me oriento.

Salu2

A. Acosta
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 21:40.