Ver Mensaje Individual
  #13 (permalink)  
Antiguo 07/08/2003, 16:23
Avatar de Manoloweb
Manoloweb
 
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Bueno, pues tienes razón biblio... pero a veces estos retos me gustan (y me sirven)

Aqui te paso el código, que combina expresiones regulares tanto en MySQL como en PHP...

Adaptarlo a tu sistema va a ser fácil, pero vas a necesitar entender que es lo que hace... así que a echarle ganas!!!

Código PHP:
<?
//Primero creas una funcion que te deje todo SIN acentos
//y todo en minusculas

$palabra="Manoloweb";

$varConAcento = array ("/á/""/é/""/í/""/ó/""/ú/""/Á/""/É/""/Í/""/Ó/""/Ú/");
$varSinAcento = array ("a""e""i""o""u""A""E""I""O""U");
function 
cambia ($texto) {
    
$texto preg_replace($GLOBALS["varConAcento"], $GLOBALS["varSinAcento"], $texto);
    
$texto strtolower($texto);
    return 
$texto;
}

//Ahora le aplicas la funcion a la palabra

$palabraN cambia($palabra);

//AQUI VIENE LO INTERESANTE...
$reg="";
for (
$i=0;$i<strlen($palabraN);$i++){
    if (
$palabraN{$i}=="a" || $palabraN{$i}=="á") {
        
$reg.="[a|á]";
    } elseif (
$palabraN{$i}=="e" || $palabraN{$i}=="é") {
        
$reg.="[e|é]";
    } elseif (
$palabraN{$i}=="i" || $palabraN{$i}=="í") {
        
$reg.="[i|í]";
    } elseif (
$palabraN{$i}=="o" || $palabraN{$i}=="ó") {
        
$reg.="[o|ó]";
    } elseif (
$palabraN{$i}=="u" || $palabraN{$i}=="ú") {
        
$reg.="[u|ú]";
    } else {
        
$reg.=$palabraN{$i};
    }
}

//Ahora construimos el query para MySQL

$qry="SELECT * FROM tabla WHERE campotexto REGEXP '$reg'";

///aqui te conectas///

$qr=mysql_query($qry);
while (
$rs=mysql_fetch_array($qr)) {
    
preg_match_all('/('.$reg.')([\s\S]*)/'$rs["campotexto"], $cadenaNPREG_SET_ORDER);
    
$coincidencias[]=substr($cadenaN[0][0],0,300);
}

//Ahora si, el array $coincidencias tiene un registro para cada
//Cadena encontrada, 300 caracteres a partir de la primera coincidencia...

?>

__________________
Manoloweb