• User Attivo

    Limitare parole testo

    Ciao a tutti,

    non sono un esperto php e ho il seguente codice che fa in modo che appena il testo arriva ad un punto si ferma. Se però il testo non ha un punto, come posso fare per aggiungere un limite di 29 parole al seguente codice?

    
    <?php
    
    $strings = preg_split('/(\.|!|\?)\s/', strip_tags($post->post_content), 0, PREG_SPLIT_DELIM_CAPTURE);
    
    echo apply_filters('the_content', $strings[0] . $strings[1]);
    
    ?>
    
    

    Grazie anticipatamente.


  • User Attivo

    Ciao Phoenix.
    Io uso questa bellissimerrima funzione:
    [PHP]function riducitesto($testo, $numero = 300, $fine = " [& #8230;]")
    {
    if(strlen($testo) > $numero)
    {
    $pos = ($numero - stripos(strrev(substr($testo, 0, $numero)), ' '));
    $sum = substr($testo, 0, $pos-1);
    $chr = $sum[strlen($sum)-1];
    if(strpos($chr, '.,!?;:'))
    {
    $sum = substr($sum, 0, strlen($sum)-1);
    }
    return $sum.$fine;
    }
    else
    {
    return $testo;
    }
    }[/PHP]

    È una funzione che ha 3 argomenti. Il primo è il testo da voler modificare, ed è obbligatorio. Il secondo e il terzo sono facoltativi, e sono rispettivamente la lunghezza a cui lo vuoi tagliare (di base 300 caratteri) e cosa vuoi inserirci alla fine (di base " [...]").

    Quindi se alla tua variabile $testo vuoi metterci 29 caratteri e troncarlo con un "... [continua]", dovrai scrivere:
    [PHP]$newtesto = riducitesto($testo,29,"... [continua]")[/PHP]

    Ciao!

    p.s. visto che qui "traducono" direttamente le htmlentities... se vuoi copiaincollare la funzione, nell'argomento togli quello spazio alla terza variabile, prima della;


  • User Attivo

    Ti ringrazio molto meis, purtroppo però avrei bisogno proprio di limitare le parole nella funziona che ho postato io perché la preferisco per vari aspetti, un pò lunghi da spiegare. Comunque sei stato gentilissimo.

    Vediamo chi può aiutarmi. Grazie ancora.


  • @Phoenix1977 said:

    Ciao a tutti,

    non sono un esperto php e ho il seguente codice che fa in modo che appena il testo arriva ad un punto si ferma. Se però il testo non ha un punto, come posso fare per aggiungere un limite di 29 parole al seguente codice?

    >
    <?php
    
    $strings = preg_split('/(\.|!|\?)\s/', strip_tags($post->post_content), 0, PREG_SPLIT_DELIM_CAPTURE);
    
    echo apply_filters('the_content', $strings[0] . $strings[1]);
    
    ?>
    
    >```
    
    Grazie anticipatamente.
    
    [PHP]
    //Se la stringa è 14 caratteri o più (con lo spazio interno), viene accorciata a 11 e mette i 3 puntini, TOT a video 14            
    if(strlen($country) >= 14) {         
    $country=substr($country,0,11)."...";        
    }
    
    echo "$country";
    [/PHP]