Visualizzazione risultati 1 fino 10 di 10

Discussione: [PHP] Creare l'anteprima di un articolo lungo

  1. #1
    Guest

    Cool [PHP] Creare l'anteprima di un articolo lungo

    Avrei bisogno di creare un'anteprima (le prime 4-5 frasi oppure le prima TOT parole) di vari articoli che potranno poi essere letti con un link del tipo "Continua...". Ora come ora mi viene in mente soltanto di inserire un tag dedicato e poi splittare l'articolo, ma non è certo questa la soluzione migliore.
    So che esistono decine di script/tutorial che spiegano come farlo, ma al momento del bisogno, chiaramente, non ne trovo nemmeno uno!

  2. #2
    Guest

    Predefinito

    questo lo puoi tranquillamente fare con cutenews..ottimo..permette di inserire news, anteprime di news, titoli, autori e data..l'autore dipenderà dagli user che iscrivi dal pannello di controllo..almeno anche qualche tuo collaboratore potrà postare..
    esistono 2 versioni di cutenews: con e senza database...tutte e due validissime..penso senza differenze..sono personalizzabilissime, e semplici da installare e utilizzare...
    ciao

  3. #3
    Guest

    Predefinito

    Non mi interessano script prefabbricati...mi serve soltanto la funzione da integrare in un "CMS" fatto da me ;)

  4. #4
    Guest

    Predefinito

    puoi fare $sottoStringa = substr($stringa, 0, lunghezzaTotale);

    io ho fatto la stessa cosa nel mio sito con le prime 200 lettere dei messaggi nel guestbook!

  5. #5
    Guest

    Predefinito

    Se tali articoli li prelevi dal database ti consiglio questo http://www.debug.altervista.org/tips.php?id=4


    Ciaooo!!!!!

  6. #6
    Guest

    Predefinito

    Ok, però così mi taglia a metà le parole...io volevo qualcosa che tagli tenendo conto degli spazi...potrei prendere le prime 200 lettere, poi prenderne una quantità X determinata dalla prima posizione di uno spazio e quindi ricomporre le due stringhe, ma credo ci sia qualcosa di meno "incasinato"

  7. #7
    Guest

    Predefinito

    Questo codice ti permette di trovare (almeno credo non ho provato) i primi 200 caratteri + i caratteri che servono per arrivare allo spazio successivo

    $sottoStringa = substr($stringa, 0, strpos($stringa, " " , 200) );
    e poi fai

    $sottoStringa .= "...";

    se ti trovi una cosa del tipo "parola ..." anzichè "parola..." devi mettere
    $sottoStringa = substr($stringa, 0, strpos($stringa, " " , 200) -1);

    dimmi se funziona

  8. #8
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a leggere questa discussione.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    un metodo abbastanza sicuro per tagliare in modo decente è cercare il primo ".<spazio><maiuscola>" da una certa dimensione minima ad una massima. E.g.

    200 caratteri - " bla bla bla bla la storia finisce qua. Comunque per .... " - 300 caratteri

    parti da 200 e cerchi il pattern, ma ti fermi per sicurezza a 300. Così tagli a livello di frase mantenendo lo snippet leggibile. Questo però può dare problemi se uno scrive in modo ermetico o strano, per cui la punteggiatura è... "artistica".

    Altro metodo, che però richiede un "intervento" è quello di inserire un commenti tipo <!--taglia qui--> nel testo, ed effettivamente utilizzare solo il testo che lo precede come anteprima

  10. #10
    Guest

    Predefinito

    Alla fine ho optato per...
    1) estrarre una substring dal database
    2) verificare se il testo estratto è uguale alla dimensione massima consentita (se SI cerca il valore dell'ultimo spazio e taglia la stringa, altrimenti la pubblica per intera)

    query: SELECT SUBSTRING(testo,1,600) AS testo FROM tabella
    codice: if(strlen($testo)==600)$testo=substr($testo,0,strr pos($testo," "));

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •