Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Decodificare caratteri speciali

    Ciao a tutti.
    Quando salvo le stringhe nel database le filtro con
    Codice PHP:
    htmlentities($strENT_NOQUOTES"UTF-8"); 
    Ora però se ho una stringa tipo:

    Codice PHP:
    $prova "è una <a href='#'>prova</a>"
    Quando la voglio stampare

    Codice PHP:
    echo html_entity_decode($prova); 
    al posto della 'è' viene fuori un punto interrogativo dentro ad un rombo, in pratica non viene riconosciuto, mentre il tag 'a' è tutto ok. Se invece non utilizzo 'html_entity_decode' la 'è' va bene, ma il tag 'a' no...

  2. #2
    Io in db non salverei le entities, ma direttamente in utf-8.
    Cmq controlla che sia la connessione, sia la tabella mysql, sia la pagina html siano in utf-8.

  3. #3
    ciao bionicoz.

    Si, tutto è in UTF-8, sia db che pagina html. Non avevo mai avuto problema fino a quando non ho permesso all'utente di poter introdurre dell'html nei commenti (ovviamente in maniera molto guidata). Quindi se stampo direttamente la stringa proveniente da database, quella con il linguaggio dei browser per intenderci, non riconosce i tag.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Ciao lore,
    se hai tutto in UTF-8, prova a fare così:

    Codice PHP:
    $str htmlentities(addslashes(utf8_decode(trim($str)))); 
    Dovrebbe funzionare.

  5. #5
    ciao m4tt86!

    tu intendi per stampare?
    Bè ho provato ma non va. Il fatto è che il decode ce lo vuole per interpretare i tag, ma non serve per i caratteri speciali...

    E cmq penso che sia sempre conveniente salvare nel db i caratteri avendoli filtrati con 'htmlentities', no?

    Alla fine, come si fa?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Se li vuoi entrare nel db codificati, devi usare quella funzione che ti ho postato io.
    Esempio:

    Codice PHP:
    function escapeForDb($value)
    {
        
    $value htmlentities(utf8_decode(trim($value)));
        return 
    function_exists('mysql_real_escape_string') ? mysql_real_escape_string($value) : mysql_escape_string($value);
    }

    $variabileperdb escapeForDb($_POST['pippo']); 

  7. #7
    Ho provato e non funziona.

    Quindi ho fatto così:

    Codice PHP:
    $string str_replace("&lt;","<",$string);
    $string str_replace("&gt;",">",$string); 


    Grazie a tutti lo stesso.

  8. #8
    E perché non eviti l'inutile passaggio per htmlentities?

  9. #9
    è una sicurezza più che altro

  10. #10
    htmlentities NON E' una misura di sicurezza, ha uno scopo ben preciso e dovrebbe essere usata per quello. Se affidi la sicurezza da htmlentities dovresti rivedere un po' le basi della sicurezza.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.