Foros del Web » Programando para Internet » PHP »

Ayuda para optimizar este codigo(busquedas)

Estas en el tema de Ayuda para optimizar este codigo(busquedas) en el foro de PHP en Foros del Web. Estoy haciendo una pagina donde hago una busqueda y resalto palabras con las ocurrencias que se presentan, los datos los tengo en un campo BLOB, ...
  #1 (permalink)  
Antiguo 08/02/2005, 12:29
 
Fecha de Ingreso: noviembre-2002
Mensajes: 112
Antigüedad: 21 años, 5 meses
Puntos: 0
Ayuda para optimizar este codigo(busquedas)

Estoy haciendo una pagina donde hago una busqueda y resalto palabras con las ocurrencias que se presentan, los datos los tengo en un campo BLOB, en el servidor donde lo pienso poner no tiene php5 solo el php4, por lo cual no puedo hacer reemplazos con la sentencia str_ireplace (que no sensible a mayus. y a minus.) pero quiero exactamente lo mismo pero con php 4, les describo mi solucion (pongo un ejemplo) :

$contenido = "El Sistema operativo Linux es una buena lternativa";

$pbuscar="sistema operativo linux";

// Buscar ocurrencias exactas
$contenido=str_replace($pbuscar,"<span style='background-color:
#FFFF00'>".$pbuscar."</span>",$contenido);

// Buscar minusculas
$pbuscar = strtolower($pbuscar);
$contenido=str_replace($pbuscar,"<span style='background-color:
#FFFF00'>".$pbuscar."</span>",$contenido);

// Buscar mayusculas
$pbuscar = strtoupper($pbuscar);
$contenido=str_replace($pbuscar,"<span style='background-color:
#FFFF00'>".$pbuscar."</span>",$contenido);

// Buscar ocurrencias con la primera letra en mayusculas
$pbuscar = ucfirst($pbuscar);
$contenido=str_replace($pbuscar,"<span style='background-color:
#FFFF00'>".$pbuscar."</span>",$contenido);

// Buscar ocurrencias con las primeras letras de palabras con mayusculas
$pbuscar = ucwords($pbuscar);
$contenido=str_replace($pbuscar,"<span style='background-color:
#FFFF00'>".$pbuscar."</span>",$contenido);

print($contenido);

Me funciona casi bien, pero no lo hace todo, por ejemplo, si quiero buscar la cadena "sistema operativo linux", no me arroja nada, debido a lo siguiente:
1. La cadena a buscar, No es una ocurrencia exacta
2. no encuentra la cadena, "sistema operativo linux"
3. no encuentra la cadena "SISTEMA OPERATIVO LINUX"
4. no encuentra la cadena "Sistema operativo linux"
5. no encuentra la cadena "Sistema Operativo Linix"

En todos los casos anteriores no aparece debido a que la palabra "operativos" no esta con la primera letra (o) en mayusculas, o se pone todo en minusculas o todo en
mayusculas, o asi sucesivamente...

Me pueden dar algun consejo para solucionar esto, a su vez tambien necesito que me ayuden para optimizar este codigo.

Gracias.
  #2 (permalink)  
Antiguo 08/02/2005, 17:41
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Utiliza expresiones regulares, sería algo así:
Código PHP:
<?
    $contenido 
"El Sistema operatiVo Linux es una buena lternativa";
    
$pbuscar "sistema operativo liNux";
    
    print 
"Contenido original: $contenido";
    
$contenido=preg_replace("/($pbuscar)/i",'<span style="background-color:#FFFF00">$1</span>',$contenido);
    print 
"Contenido resaltado: $contenido";
?>
__________________
Alex Concha
Buayacorp - Programación y Diseño

Última edición por xknown; 08/02/2005 a las 17:48
  #3 (permalink)  
Antiguo 09/02/2005, 10:50
 
Fecha de Ingreso: noviembre-2002
Mensajes: 112
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias

Eres genio, gracias por la ayuda....
  #4 (permalink)  
Antiguo 09/02/2005, 10:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 112
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias

Eres genio, gracias por la ayuda.... lo estoy checando funciona bien.
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:25.