Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2008, 12:23
Mirador
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Problema con expresiones regulares en php

Estoi haciendo un buscador de videos que tendran los datos en mi BD.

Es el tipico que al pinchar en la letra "a" lo manda por index.php?id_a=a

El problema me viene que he utilizado las expresiones regulares para que cuando pulse a me salgan tambien las letras á, à, â, ä y ã y me sacan tambien las letras como ü o ñ no se porque razon...

Adjunto el codigo para que me puedan ayudar:

Código PHP:
<?
$id 
$_GET['id_a'];
if (
$id) {
    echo 
'Buscando animes que empiezan por '.$id.'<br>';
    switch (
$id){
    case 
'simbolos':
        
$sql "^[:alnum:]";
        break;
    case 
'numeros':
        
$sql "0-9";
        break;
    case 
'a':
        
$sql "aáàäâã";
        break;
    case 
'e':
        
$sql "e€éèëê";
        break;
    case 
'i':
        
$sql "iìíïî";
        break;
    case 
'o':
        
$sql "oòóöôõ";
        break;
    case 
'u':
        
$sql "uùúüû";
        break;
    case 
'n':
        
$sql "nñ";
        break;
    default:
        
$sql $id;
    }
    
$sql "select * from series where lower(nombre) regexp '^[$sql]' order by nombre";
}else{
    
$sql "select * from series order by nombre";
}
echo 
''.$sql.'<br>'//Para ver si sale bien la sql por pantalla o se le va la pinza
$animes mysql_query($sql);
if(
mysql_num_rows($animes) == 0) {
    echo
'No hay series';
}else {
    while(
$datosanimes mysql_fetch_array($animes)) {
    echo 
''.$datosanimes[nombre].'<br>';        
    }
}    
?>
A la hora de la busqueda con la letra a me salen los siguientes resultados:

Buscando animes que empiezan por a
select * from series where lower(nombre) regexp '^[aáàäâã]' order by nombre
ásaf
asdf1
asdf2
Ñaaaaa
ñoñoñ
Ü765
üjhfv

De antemano muchas gracias!