La scelta puo' essere giusta.

Devi considerare che alcuni caratteri possono avere piu' di una funzione. Per esempio proprio apici e doppi apici ma anche il backslash \ possono avere sia funzione di controllo che funzione di stringa. Ovvio che bisogna identificare correttamente quando e' controllo e quando e' stringa. Per questo ci sono i caratteri chiamati di escape che precedendo un carattere ascii ne definiscono la funzione.

Ovvio che se invece del carattere ascii (es " ) tu metti l'equivalente come entita' html non hai piu' il problema di gestire l'escape. Ma non solo, htmlentities converte tutti i possibili caratteri in entità HTML e superi cosi' anche le diversita' del character set. Cosa che normalmente fanno gli editor online (es.: fckeditor) basta controllare il codice sorgente che realizzano.

Altro esempio: mysql_real_escape_string() provvede ad aggiungere il corretto carattere di escape alle stringhe in relazione al tipo di connessione e database utilizzato per le stringhe che devono essere immesse nella tabella. Ovviamente dopo l'inserimento l'escape non ha piu' ragione di esistere e difatti viene eliminato dal campo della tabella.

le magic_quote_gpc (gpc sta per GET, POST, COOKIE) provvedono ad inserire automaticamente questi caratteri a scopo anche preventivo di possibili sql injection, ma questi escape possono anche essere "diversi" o non "servire" al nostro scopo. Quindi da qui viene prima di tutto la necessita' di rimuoverli nel caso ci fossero e poi utilizzare mysql_real_escape_string per inserire quelli corretti.

Conviene o non conviene inserire nella tabella le stringhe convertite da htmlentities ??? beh! io dico dipende... se devo fare delle ricerche sul contenuto dovro' passare delle stringhe convertite visto che mi ricerchera' solo caratteri ascii, ma se devo solo stamparle non dovro' convertirle ogni volta... diciamo che "forse" sarebbe meglio inserire il testo cosi' com'e' senza entita html. Personalmente ritengo che dipenda da come si struttura il progetto.


Mi perdonino i puristi per il linguaggio approssimativo e discorsivo utilizzato ma la sostanza e' quella descritta.