• Bannato User Attivo

    Salvare del testo nel DB e dormire sonni tranquilli

    Avevo tempo fa accennato al problema ma non riesco a rintracciare la discussione.

    Allora, vorrei fare in modo che il testo salvato nel database (mysql) fosse salvato con i caratteri "strani" tutti convertiti in codifiche html tali da essere sicuro che non si creano problemi.

    Per esempio salvare la e con l'accento con il relativo è e vi a di seguito.

    Finora ho fatto una lista, ma

    1. non so se è completa, anzi sicuramente non lo è perchè manca il doppio apice che non so convertire;
    2. non so se c'è un modo più immediato e solido del mio.

    Finora ho fatto così:

    $news_text = $_REQUEST[news_text];
    $news_text = addslashes(stripslashes($news_text));
    $news_text = str_replace("<", "&lt;", $news_text);
    $news_text = str_replace(">", "&gt;", $news_text);
    $news_text = str_replace("à", "&agrave;", $news_text);
    $news_text = str_replace("è", "&egrave;", $news_text);
    $news_text = str_replace("ì", "&igrave;", $news_text);
    $news_text = str_replace("ò", "&ograve;", $news_text);
    $news_text = str_replace("ù", "&ugrave;", $news_text);
    $news_text = str_replace("'", "&#39;", $news_text);
    

    Spero la discussione possa essere utile a molti.
    Fabio.


  • User Attivo

  • Bannato User Attivo

    Ma ora ho un problema, un bel problema. 😄

    Focalizziamoci sul campo titolo della news.
    Ho messo un limite di 60 caratteri nel tipo di variabile su mysql che lo memorizza.

    Ma se uno come titolo della news mette 58 caratteri nornmali con all'interno qualche " oppure ' o parole accentate èòàùì il titolo della news viene spezzato poichè la trasformazione del testo occupa molti più caratteri.

    Come fare?

    E poi vorrei sostituire i successi < /br> in <p></p> e non saprei come fare ma mi informo 🙂


  • User Attivo

    metti il campo sul db come varchar 255 e il campo del form lo limiti a 60 caratteri. Cosi' risolvi buona parte dei problemi a meno che uno non scrivi 60 accentate di fila.
    Il varchar ha la caratteristica di essere un "campo a dimensione variabile" cioe' se il testo e' di 40 caratteri nel db il campo occupa 40 bytes, se e' di 200 ne occupa 200.