Originariamente inviato da Gab-81
A prescindere da codifiche, io preferisco sempre questa bella funzioncina semplice semplice che toglie da svariati inconvenienti...

Codice PHP:
/* Replace the special html characters */
function replace_special_character($text) {
    
ereg_replace('à''à'$text);    // Replace à with à
    
ereg_replace('è''è'$text);    // Replace è with è
    
ereg_replace('é''é'$text);    // Replace é with è
    
ereg_replace('ì''ì'$text);    // Replace ì with ì
    
ereg_replace('ò''ò'$text);    // Replace ò with ò
    
ereg_replace('ù''ù'$text);    // Replace ù with ù
    
return $text;

orripilante e ora ti spiego perchè:

1. prende in considerazione solo le lettere accentate, quando domani qualcuno inserirà un carattere la umlaut (per il tedesco), oppure il semplice » (che magari ti inseriscono incollando da word), sei fregato.

2. Cosa succede se domani devi creare un pdf dei dati che hai su db? O ti fai una funzione inversa, oppure se hai scritto le cose bene in partenza non devi fare nulla.

Il problema annoso della codifica caratteri spesso crea confusione, anche io ci ho sbattuto la testa forte prima di capirlo, eppure alla fine quando lo capisci è una stupidata, la morale può essere riassunta in questi 3 punti per la creazione/progettazione:

1. Crea il db con charset, collation utf8
2. Crea i tuoi file in utf8 (per alcuni editor non c'è questa opzione, ma è importante, perchè se scrivi una lettera accentata nei tuoi file html usando l'iso come codifica stai certo che vedrai i quadratini).
3. Nei file php inserisci questo all'inizio :
codice:
header('Content-type: text/html;charset=utf-8');
Per il debug:

1. E' importante sapere che i browser hanno il menu visualizza->"codifica", che in genere è settato su riconoscimento automatico, ma che usato a dovere ti permette di capire in quale charset stai vedendo la pagina e se il risultato è quello che ti aspetti.
2. E altrettanto importante sapere che phpmyadmin non sempre dice la verità, perchè alla fine è un sito che soffre anche lui del problema della codifica, io per essere certo di quello che sto guardando controllo sempre la codifica, e 9 volte su 10 se la cambi vedrai i caratteri corretti.
Ricorda, phpmyadmin è un livello intermedio tra te e il db, è un ottimo strumento, ma non è il db, non dare per scontato che quello che ti mostra è il vero contenuto del db.

Vedrai che se segui questi consigli i problemi saranno minori, e ti dimenticherai le htmlentities (per la quale comunque esiste una funzione apposita, e non quella funzione che usi tu)

Ultimamente sto mettendo mano a un sito creato da altri, e mi sono trovato un header che segnalava uf8, db in utf8 e files editati in iso, con almeno 40 str_replace per pagina (una cosa simile alla tua funzione), è bastato salvare i file in utf8 per eliminare centinaia di righe di codice (che tra l'altro non danno un risultato affidabile, perchè basta dimenticare una volta il replace per introdurre un errore).

Non è per essere presuntuoso, ma l'attenzione a queste problematiche differenzia un programmatore casalingo da un professionista.

Ciao