Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    substr e caratteri speciali

    A quest'indirizzo http://www.stockoccasioni.it/catalogo2.php potete vedere un catalogo con alcune centinaia di prodotti. Come potete vedere alcuni prodotti, come il 169, hanno una descrizione troppo lunga e, di conseguenza, questo non permette di visualizzare le informazioni prezzo, offerta e quantità.
    Ho risolto facilmente il problema troncando la descrizione a 250 caratteri con substr:
    $descrizione=substr($descrizione, 0, 250)
    E qui succede l'assurdo, la visualizzazione si ferma dopo il titolo del prodotto 73. Guardo il codice sorgente della pagina e c'è tutta con tutti i prodotti. Provo a cambiare il 250 con 260, 240, 249 e ogni volta mi mostra un numero diverso di prodotti.
    Ne ho dedotto che nel troncare la stringa si generi un carattere speciale che interrompa la visualizzazione della pagina o qualcosa di simile, ma guardando il codice non trovo niente di "sospetto". Ho cercato anche informazioni su particolari caratteri HTML a questo scopo ma senza successo.
    Ho anche sostituito substr con mb_substr, ma con lo stesso risultato.
    Per ora risolvo cambiando il font del carattere per le descrizioni lunghe, ma mi piacerebbe venirne a capo. Sarebbe anche molto istruttivo.
    Grazie per la collaborazione,
    Luciano
    Scarica manuali e libri open source in formato epub, pdf, mpeg: www.ebooksopen.org

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Penso che tu faccia lo substr senza tenere conto dei tag html nella descrizione, di conseguenza se ne lasci di aperti...

    Giusto per curiosità prova a vedere se interrompe la visualizzazione della pagina con:
    $descrizione=substr(htmlspecialchars($descrizione) , 0, 250)

  3. #3
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Penso che tu faccia lo substr senza tenere conto dei tag html nella descrizione, di conseguenza se ne lasci di aperti...

    Giusto per curiosità prova a vedere se interrompe la visualizzazione della pagina con:
    $descrizione=substr(htmlspecialchars($descrizione) , 0, 250)
    Confermo,
    con htmlspecialchars visualizza tutto. Solo che i tag, ad esempio <h2>, vengono visualizzati come testo e, appunto, non come tag.
    Dunque, faccio un esempio per capire se ho capito bene: se in una stringa viene aperto un tag <h2> e la chiusura </h2> di trova oltre il carattere 250 va tutto in casino, giusto?
    Ho diverse soluzioni in mente, ma tutte complesse.
    La più facile potrebbe essere quella di inserire uno <span style="display:hidden;"> nella posizione 250 e un </span> a fine testo. Potrebbe andare? Hai soluzioni più semplici?
    Scarica manuali e libri open source in formato epub, pdf, mpeg: www.ebooksopen.org

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Basta contare il numero di tag nella descrizione, ricontarli dopo lo substr e inserire le chiusure mancanti... te la cavi con un for, 3 if e 3 variabili (se non ho contato male a mente)... oppure contarli direttamente alla fine ma potrebbe essere un problema se utilizzi tag annidati come <ul><li>...
    Ultima modifica di zacca94; 23-01-2018 a 13:30

  5. #5
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Basta contare il numero di tag nella descrizione, ricontarli dopo lo substr e inserire le chiusure mancanti... te la cavi con un for, 3 if e 3 variabili (se non ho contato male a mente)... oppure contarli direttamente alla fine ma potrebbe essere un problema se utilizzi tag annidati come <ul><li>...
    Perfetto,
    grazie mille!
    Scarica manuali e libri open source in formato epub, pdf, mpeg: www.ebooksopen.org

Tag per questa discussione

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.