• User Attivo

    Visualizzazione di caratteri speciali

    Salve, sul mio database mysql ho memorizzato dei campi testuali liberi in cui vengono inserite delle descrizioni di vario genere.
    Spesso all'interno di questi testi ci sono caratteri speciali quali accenti e via discorrendo.
    Quando vado a visualizzare il esto con un echo, tutto è normale e senza erore.
    Ma a volte devo memorizzare solo i primi caratteri del testo

    [PHP]
    $testo = substr($testo, 0, 300);
    echo $testo;
    [/PHP]

    Può capitare che questa interruzione del testo avvenga proprio nel bel mezzo di un carattere speciale che sul db è memorizzato come ù e quindi, anziché vizualizzare più come è giusto che sia, viene visualizzato pi&ug.
    Come posso fare per visualizzare i caratteri corettamente?


  • User Attivo

    Ciao freebreathe,

    Il mio consiglio è di non memorizzare nel database i caratteri speciali sostituiti dalle entities html, in modo da evitare questi problemi.
    Una soluzione, se per te è applicabile, elegante e sicura potrebbe essere la conversione in utf-8 delle tue pagine e del database, in modo da poter riportare direttamente i caratteri speciali (eccetto "<",">" e "&"), senza doversi preoccupare di effettuare sostituzioni.

    A tal proposito ti segnalo questa discussione, dove appunto ho proposto due accorgimenti per maneggiare questo charset.

    In caso ciò non fosse applicabile, ti suggerisco come seconda opzione di mantenere la tua attuale configurazione, ma utilizzare le espressioni regolari, per verificare che non sia presente un pattern "/&[a-zA-Z]+;/" negli ultimi caratteri.

    Un saluto,
    Luca Bartoli


  • User Attivo

    Alla fine ho risolto tutto con un html_entity_decode che mi ha cancellato ogni carattere strano.