descripcion
El Museo del Prado es una de las pinacotecas más importantes del mundo, y cuenta con una inigualable colección de pintura española, italiana y flamenca. Está situado en Madrid, (España). Junto con otros dos centros, el Museo Thyssen-Bornemisza y el Museo
Como pueden ver las tildes y las ñ estan en codigo html.
el codigo de la busqueda es la siguiente:
Código :
//$busqueda es la palabra q voy a buscar dentro de descripcion
$sql = "SELECT cod_link FROM link where MATCH(descripcion) AGAINST('$busqueda' IN BOOLEAN MODE)";
$resultado=$miconexion->consulta($sql);
$num_total_registros =$miconexion->numRows($resultado);
if($num_total_registros!=0 && $pagina>0){
$total_paginas = ceil($num_total_registros / $tamano_pagina);
//esta consulta es para inprimir una imagen un titulo de la descripcion y limitar la paginacion
$ssql = "SELECT * FROM link,link_categoria,sitio where MATCH(link.descripcion) AGAINST('$busqueda' IN BOOLEAN MODE) and link_categoria.cod_link=link.cod_link and link.cod_sitio=sitio.cod_sitio limit " . $inicio . "," . $tamano_pagina;
$resultado=$miconexion->consulta($ssql);
while($row = $miconexion->getFilasArreglo($resultado))
{
//poner en negrita la palabra de la busqueda
$trozos = explode(" ", $row["descripcion"]);
$espacios=1;
for($n=0;$n<(strlen($row["descripcion"]));$n++)
{
if(($row["descripcion"][$n])==' '){$espacios=$espacios+1;}
}
?>
<table border="0" cellpadding="0" cellspacing="4" width="100%">
<tbody><tr>
<td class="fondoazul_claro centrartexto" width="165" align="center">
<a href="<?php echo ($row["nombre_link"]);?>" target="_blank">
<img src="<?php echo ($row["imagen_sitio"]);?>" alt="<?php echo ($row[ "nombre_sitio"]);?>" title="<?php echo ($row["nom_video"]);?>" border="0" width="150"/>
</a></td>
<td class="fondogris">
<h3><?php echo ($row["nombre_sitio"]);?></h3>
<p><?php
//aqui es donde doy las condiciones para imprimir la $busqueda en un color rojo dentro de la descripcion
for($j=0;$j<$espacios;$j++)
{
if((!strcasecmp ($trozos[$j],$busqueda.".")) || (!strcasecmp($trozos[$j],$busqueda)) || (!strcasecmp($trozos[$j],$busqueda.",")) || (!strcasecmp($trozos[$j],"<".$busqueda.">")) || (!strcasecmp($trozos[$j],"'".$busqueda."'")) || (!strcasecmp($trozos[$j],$busqueda.";")) || (!strcasecmp($trozos[$j],$busqueda.":")) || (!strcasecmp($trozos[$j],$busqueda."-")) || (!strcasecmp($trozos[$j],'"'.$busqueda.'"')) || (!strcasecmp($trozos[$j],'('.$busqueda.')')) || (!strcasecmp($trozos[$j],'('.$busqueda)) || (!strcasecmp($trozos[$j],$busqueda.')')))
{
echo "<b class='textorojo'> ".$trozos[$j]."</b>";
$j++;
}
echo " ".$trozos[$j];//strcasecmp Comparación de cadenas insensible a mayúsculas y minúsculas
}
?></p>el problema es el siguiente:
la busqueda de palabras sin signos de acento la realiza muy bien y las pone en color rojo.
cuando la palabra de busqueda lleva signo de acento o esta con ñ no me realiza la busqueda para este problema utiliza el siguiente codigo antes de hacer la busqueda en la base de datos.
Código :
$busqueda=htmlentities($busqueda);//htmlentities Convierte todos los caracteres a su entidad HTML aplicable
listo con esto me busca las palabras con signo de acento y ñ, pero el problema es que busca todas las palabras con ñ y no la palabra especifica
ejemplo:
$busqueda="ocaña";
el resultado es todas las palabras con ñ= españa, ocaña, caña...
y no me pone en color rojo la palabra
de antemano les agradesco y perdon por esta larga explicacion
