Foros del Web » Programando para Internet » PHP »

buscador que busca palabra acentuada y no acentuada

Estas en el tema de buscador que busca palabra acentuada y no acentuada en el foro de PHP en Foros del Web. Hola buenas, tengo una base de datos cuyos campos son cotejamiento : utf8_spanish_ci Estoy haciendo un buscador de palabras, y lo que necesito es que ...
  #1 (permalink)  
Antiguo 03/03/2008, 03:49
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 2 meses
Puntos: 2
buscador que busca palabra acentuada y no acentuada

Hola buenas, tengo una base de datos cuyos campos son cotejamiento : utf8_spanish_ci

Estoy haciendo un buscador de palabras, y lo que necesito es que si pongo una palabra como eclesiología, me la busque con acento o sin acento en todas sus variates, por lo qu eutilizo esto:

Código PHP:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form method="get" action="buscar.php">
<input type="hidden" name="cmd" value="search" />
<table class="fondo" border="0" align="center" cellpadding="1" cellspacing="0">
<tr><td>';
<table  border="0" align="center" cellpadding="3" cellspacing="0" >
<tr><td class="fondoclaro">

<p class="sinmargen" align="center"> &emsp; T&eacute;rminos a buscar:
<input type="text" name="words" value="<?=$_GET['words']?>" />
<input type="submit" value="Buscar" /></p>
</td></tr></table>
</td></tr></table>
</form>

<?
require("../includes/configuracion.php");

$searchstring mysql_escape_string($_GET['words']);
static 
$acentos "áéíóúÁÉÍÓÚàèìòùñÑÀÈÌÒÙâêîôûÂÊÎÔÛäëïöüÄËÏÖÜ";
    static 
$validos "aeiouAEIOUaeiounNAEIOUaeiouAEIOUaeiouAEIOU";
    
$searchstring =  strtr(utf8_decode($searchstring), $acentos$validos); 

function 
php_rlike($str) { 

            
$a1 = array( 
                
'/[aàáäåãæâAÀÁÄÅÃÂ]/'
                
'/[eèéêëEÈÉÊË]/'
                
'/[iìíîïIÌÍÎÏ]/'
                
'/[oöôõðòóøOÖÔÕÒÓØ]/'
                
'/[uüûùúÜÛÙÚ]/'
                
'/[yÿýÝ]/'
                
'/[ñÑ]/'
                
'/[çÇ]/'
            
);

            
$a2 = array( 
                
'[aàáäåãæâAÀÁÄÅÃÂ]'
                
'[eèéêëEÈÉÊË]'
                
'[iìíîïIÌÍÎÏ]'
                
'[oöôõðòóøOÖÔÕÒÓØ]'
                
'[uüûùúÜÛÙÚ]'
                
'[yÿýÝ]'
                
'[ñÑ]'
                
'[çÇ]'

            
);

        return 
preg_replace($a1$a2$str); 

    }

$palabra php_rlike($searchstring);

$palabra trim(utf8_encode($palabra));

$_pagi_sql mysql_query("SELECT * FROM campos_st WHERE titulo rlike '$palabra' and id = 1") or die(mysql_error());
   
while(
$row mysql_fetch_array($_pagi_sql))
{

echo 
$row['titulo']."<br>";

}
El caso es que aveces funciona y a veces no y no se cual puede ser el motivo, estoy haciendo la consulta en el id=1 que corresponde con esta frase.

El vocabulario técnico de Qumrán en relación con el concepto de comunidad. Estudios premilinares para una eclesiología bíblica. (Primera parte)

Si busco eclesiologia, me lo busca sin problemas, en cambio si por ejemplo busco relacion, no me muestra valores, le van solo las palabras raras?

Alguien sabe porque puede estar fallando esto?

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 03/03/2008, 18:57
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: buscador que busca palabra acentuada y no acentuada

nadie sabe si como lo estoy haciendo estaría bien?, con esto en principio buscaría palabras acentuadas y no acentuadas, alguien conoce algú metodo mejor?

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:22.