Avevo lo stesso problema. Ora l'ho risolto usando la funzione utf8_encode. Esempio di consultazione via POST di un flat-database. Il segreto è essere sicuri che il database sia codificato UTF8. E' bene che nell'HEAD del file che ospita il codice php, ci sia la seguente riga
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Il database in questo esempio è un semplice file di testo, per esempio creare un file .txt con parole con e senza accento:
...
caffè
casa
oltrepò
ecc..
salvarlo come 'db.txt'
programma:
<?php
if( isset($_POST['submit']) && trim($_POST['cerca']!="") )
$cerca=htmlspecialchars(strtolower($_POST['cerca'])); // per la sicurezza
$riga=file('db.txt');
foreach($riga as $rd) {
$found=strpos(utf8_encode(strtolower($rd)),$cerca) ;
if(!($found===FALSE)){
echo utf8_encode($rd) . "
";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
cerca: <input type='text' name='cerca'>
<input type='submit' name='submit' value='invia'>
</form>
introducendo nell'input parole accentate, se queste sono presenti nel flat database, verranno stampate correttamente.
Buon lavoro