Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2005, 12:29
echuc
 
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.