Leggere html da database e stamparlo

« Older   Newer »
 
  Share  
.
  1. walter4991
     
    .

    User deleted


    Ciao a tutti, ho la necessità di salvare del testo formattato nel database, per fare ciò leggo il contenuto della text area, e lo inserisco nel database dopo essere stato processato dalla funzione htmlentities(). Nel momento in cui devo leggerlo uso la funzione html_entity_decode().

    Però non capisco perchè inserendo del testo non formattato questo venga visualizzato fuori dal template, ad esempio questo codice viene visualizzato correttamente:

    HTML
    <p><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo -&nbsp;<strong>Prova testo</strong>&nbsp;- Prova testo -&nbsp;<sup><u>Prova testo</u></sup>&nbsp;- Prova testo -&nbsp;Prova testo - Prova testo -&nbsp;Prova testo -&nbsp;<span style="color: rgb(0, 255, 0);"><strong>Prova testo&nbsp;</strong></span><span style="background-color: rgb(255, 0, 0);">Prova testo</span>&nbsp;- Prova testo</p>


    mentre questo no:

    HTML
    <p>Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao&nbsp;Ciao</p>


    Questo sarebbe il risultato:

     
    Top
    .
  2. Alchimist
     
    .

    User deleted


    Il decode funziona correttamente, in quanto il parsing del testo non dà errori.
    Hai per caso un sito dove stai testando questo codice?
     
    Top
    .
  3. walter4991
     
    .

    User deleted


    lo sto testando in locale con xampp, Ho notato che capita quando il testo è formato in questo modo
    CODICE
    ciao&nbsp;ciao&nbsp;ciao&nbsp;ciao&nbsp;
    se il testo fosse formattato semplicemente, cioè "ciao ciao ciao ciao" non succede.


    Per ora ho risolto così:
    CODICE
    $testo = str_replace("&nbsp;", " ", $_POST['contenuto']);
    $testo = htmlentities($testo);


    però mi sembra una soluzione un po grossolana, avete qualche consiglio?
     
    Top
    .
  4. meh.
     
    .

    User deleted


    Dovresti inserirlo nel database intatto, e poi escaparlo quando outputti, non il contrario.
     
    Top
    .
  5. walter4991
     
    .

    User deleted


    Scusami ma non ho capito tanto bene. Ok, inserisco direttamente l'html nel db poi...?
     
    Top
    .
  6. meh.
     
    .

    User deleted


    Poi quando lo devi outputtare lo escapi con htmlentities o simili.
     
    Top
    .
  7. walter4991
     
    .

    User deleted


    Stessa cosa, non cambia nulla.
     
    Top
    .
  8. meh.
     
    .

    User deleted


    QUOTE (walter4991 @ 12/2/2013, 22:54) 
    Stessa cosa, non cambia nulla.

    La mia risposta non era relativa al problema, il problema e' comunque che usi &nbsp; al posto di uno spazio, non sono la stessa cosa.

    Non filtrare la roba che infili nel database, se proprio devi la filtri tirandola fuori, in questo caso non vuoi filtrarla tirandola fuori.
     
    Top
    .
  9. walter4991
     
    .

    User deleted


    Se scrivo manualmente "Ciao Ciao Ciao Ciao Ciao" tutto funziona perfettamente e lo spazio in mezzo viene salvato così com'è.

    Se invece scrivo una sola volta "Ciao " e lo copio, compreso quello spazio, ogni volta che lo incollo lo spazio si traduce in &nbsp ;

    Può dipendere dall'editor? Uso CKeditor.
     
    Top
    .
  10. walter4991
     
    .

    User deleted


    Qualche soluzione?
     
    Top
    .
9 replies since 11/2/2013, 22:39   103 views
  Share  
.