Foros del Web » Programando para Internet » PHP »

Problema con expresiones regulares en php

Estas en el tema de Problema con expresiones regulares en php en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2008, 12:23
 
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!
  #2 (permalink)  
Antiguo 09/04/2008, 03:25
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Re: Problema con expresiones regulares en php

Alguien que me pueda ayudar?
  #3 (permalink)  
Antiguo 09/04/2008, 04:25
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Re: Problema con expresiones regulares en php

Investigando creo que puede ser un problema de la codificacion de mysql, he realizado una consulat en http://www.forosdelweb.com/f21/caracteres-mysql-574083/ por si alguien quiere echarle un vistazo en el futuro.

Muchas gracias!
  #4 (permalink)  
Antiguo 09/04/2008, 04:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: Problema con expresiones regulares en php

haz la consulta directamente en la consola de comandos a ver qué te saca. Porque a lo mejor el error no está en la codificación de mysql, sino en la de la web.
__________________
"Prefiero callar como un tonto, que hablar para confirmarlo"
Espectacular Portal en crecimiento: Artículos http://www.blorgia.com
  #5 (permalink)  
Antiguo 09/04/2008, 04:48
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Re: Problema con expresiones regulares en php

desde la consola de comandos de phpmyadmin me saca exactamente el mismo resultado que desde el codigo php...

Cambie el cotejamiento a utf8-unicode-ci para ver si era eso, pero nada de nada....
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 20:57.