Visualizzazione risultati 1 fino 4 di 4

Discussione: Spiegazione di una funzione php

  1. #1
    Guest

    Predefinito Spiegazione di una funzione php

    Salve ragazzi!
    Sul web ho trovato la seguente funzione:

    Codice PHP:
    //Tagliaparole
    function tagliaparole($txt, $len, $add)
    {
    //Elimino eventuali tag HTML
    $txt = strip_tags($txt);

    if (
    strlen($txt) <= $len) return $txt;
    $nuovo = wordwrap($txt, $len, "|",1);
    $nuovotesto=explode("|",$nuovo);
    return
    $nuovotesto[0].$add;
    }
    dove $txt è la stringa da tagliare , $len la lunghezza e $add la stringa da inserire dopo il troncamento.

    Non riesco a capire come funziona, cioè la funzione wordwrap fa andare a capo rigo una stringa ogni volta che incontra il carattere "|" ed explode divide la stringa in un array ogni volta che trova il carattere "|".

    Ma come mai riesce a tagliare anche una stringa che NON contiene "|" ?

  2. #2
    Guest

    Predefinito

    Codice PHP:
    /*
    FUNZIONE: Tagliaparole
    PARAMETRI:
    - $txt => la stringa da tagliere
    - $len => lunghezza massima della stringa superata al quale si progede al taglio
    - $add => stringa da apporre successiva al taglio
    */
    function tagliaparole($txt, $len, $add)
    {
    //Elimino eventuali tag HTML
    $txt = strip_tags($txt);

    // se la lunghezza è inferiore a quella massima (indicata come secondo parametro)
    // restituisce la stringa priva di tag
    if (strlen($txt) <= $len) return $txt;
    // ALTRIMENTI: applica la funzione wordwrap
    /*
    PARAMETRI DELLA FUNZIONE WORDWRAP:
    1) la stringa da tagliare a spezzoni
    2) lunghezza di ogni spezzone
    3) carattere da anteporre fra ogni spezzone
    4) l'ultimo parametro può assumere valori 0/1 o TRUE/FALSE
    e serve ad indicare se devono essere o meno troncate anche le parole

    così come applicata in questo caso avrai una stringa i cui spezzoni sono
    separati dal carattere | il quale ha tagliato anche le parole
    */
    $nuovo = wordwrap($txt, $len, "|",1);
    /*
    EXPLODE: trasforma una stringa in un array.
    Essa riceve due parametri obbligatori:
    il primo è una stringa e
    il secondo è i o il carattere separatore.
    Essa darà come return un array contenente
    i singoli elementi della stringa.
    */
    $nuovotesto=explode("|",$nuovo);

    /*
    Prende il primo elemento dell'array ottenuto con explode
    ovvero il primo spezzone della funzione wordwrap
    e gli aggiunge l'ultimo parametro passato nella funzione
    */
    return $nuovotesto[0].$add;

    /*
    CONCLUSIONE:
    pessima funzione...
    sarebbe bastato substring() e in pochi
    passaggi si sarebbe ottenuto
    il medesimo risultato
    */
    }
    Ultima modifica di miniscript : 08-03-2011 alle ore 23.38.35

  3. #3
    Guest

    Predefinito

    Grande grazie mille!

    Ma con substring() avrei dovuto spezzare le parole

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da trysentenziasite Visualizza messaggio
    Grande grazie mille!

    Ma con substring() avrei dovuto spezzare le parole
    si... salvo complicarsi la vita con altre cose

Regole di scrittura

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