- Home
- Categorie
- Coding e Sistemistica
- PHP
- Errore con htmlentities
-
Errore con htmlentities
Salve a tutti!
Ho fatto un form per la registrazione e ora dovrei convertire i dati immessi dall'utente con l'htmlentities().
Ho, però, due problemi: il primo è che quando stampo a video $_POST['nome'], nel caso in cui ci sia l'apicetto ' lui automaticamente aggiunge prima il carattere di escape \ senza che io l'abbia deciso da qualche parte. Si può modificare questa cosa?
Il secondo problema è, invece, che non mi funziona l'htmlentities: praticamente non mi riconosce correttamente i caratteri immessi. Se, per esempio, inserisco 'à' lui me lo traduce con 'Ã ' che è invece 'Ã ' e non so perché.
Qualcuno sa cosa devo fare?
Grazie mille!
-
Per rimuovere il backslash puoi usare questa funzione:
[php]
function unhtmlentities($string)
{
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\1"))', $string);
$string = preg_replace('~&#([0-9]+);~e', 'chr("\1")', $string);
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
[/php]Il problema di conversione dei caratteri forse è dovuto ad un'errata codifica dei dati nella pagina di invio, prova ad utilizzare UTF-8.
[html]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
[/html]Ciao!
-
C'è già la codifica UTF-8 ma converte tutti i caratteri in modo strano, non corrispondenti a quelli reali...
-
Prova in questo modo:
htmlentities($stringa, ENT_COMPAT, "UTF-8");
-
perfetto! ora funziona!
però quando faccio l'html_entity_decode mi mostra i quadratini al posto delle lettere accentate...
-
Imposta anche html_entity_decode con la codifica UTF-8.
html_entity_decode($stringa, ENT_COMPAT, "UTF-8");
-
Wow, funziona!!!
Grazie infinite!!!
-
Prego!