ocupa en ese caso un str_replace y cuando sea o no tilde lo tomas como normal se entiende? asi siempre comparas lo mismo....
Código PHP:
<?php
//de base de datos traes por $descripcion que ya esta con htmlentities()
$descripcion = $datos[descripcion]; // ok
//creamos nuestra funcion
function cambia($texto){
$txt = $texto;
$txt = str_replace("á","á",$txt);
$txt = str_replace("é","é",$txt);
$txt = str_replace("í","í",$txt);
$txt = str_replace("ó","ó",$txt);
$txt = str_replace("ú","ú",$txt);
$txt = str_replace("Á","Á",$txt);
$txt = str_replace("É","É",$txt);
$txt = str_replace("Í","Í",$txt);
$txt = str_replace("Ó","Ó",$txt);
$txt = str_replace("Ú","Ú",$txt);
$txt = str_replace("ñ","ñ",$txt);
$txt = str_replace("Ñ","Ñ",$txt);
//esta funcion me la dieron aqui en los FDW en su tiempo, asi que thanks :P
return $txt;
}
//la aplicamos
$compara = cambia($descripcion);
//una ves lista la funcion es cosa de comparar
$recibe_de_form = $_POST[descripcion];
//esto es lo que recibimos del form cierto sin htmlentities()....
//y bueno se entiende la idea :P
?>
espero te sirva :D