PHPBBIntegrare PHPBB PHPFunzioni PHP CFunzioni C EcologiaLa mia ecologia   Chi siamoChi è Senamion HomeHome page corner Il Web e l'ecologia

Senamion


Chi siamo:

Il web e l'ecologia, condividere il web e un momento di riflessione sullo stato dell'ecologia e sul suo futuro

Google

[PHP] Troncare una stringa senza tagliare una parola

30 Maggio 2006 by Giovanni | Argomenti: none | 10128

Per troncare una stringa in php é sufficiente usare la funzione substr mettendo come secondo parametro il valore 0 (per partire dall’inizio) e come terzo parametro il numero di caratteri a cui si vuole troncare la stringa.

Questa semplice funzione PHP che presento, invece, permette di troncare una stringa ad un certo punto senza tagliare le parole.

E’ sufficiente passare la stringa da troncare ed il numero di caratteri. Alla stringa ritornata vengono aggiunto 3 puntini in fondo.

// // FUNZIONE CHE DIVIDE LA STRINGA A TOT CARATTERI SENZA TAGLIARE LE PAROLE // E AGGIUNGENDO IN FONDO (SE CONTINUA) ... // function troncaTesto($testo, $caratteri=50) { if (strlen($testo) <= $caratteri) return $testo; $nuovo = wordwrap($testo, $caratteri, "|"); $nuovotesto=explode("|",$nuovo); return $nuovotesto[0]."..."; }

Esempio di chiamata:

$testo = "Provo a troncare questa stringa senza tagliare in due le parole a posizione 50"; $nuovoTesto = troncaTesto($testo, 50);

Pubblicato in Funzioni e classi PHP e C |

6 Commenti a “[PHP] Troncare una stringa senza tagliare una parola”

  1. chriii scrive:

    Ciao!
    La tua funzione è molto compatta e funziona alla meraviglia, ma crea problemi se ci sono caratteri di ritorno a capo.
    La funzione non da errore ma restituisce una stringa il cui numero di caratteri è molto inferiore al possibile: non c’è modo di non considerare i “carriage return” ?

  2. info scrive:

    Io la utilizzo normalmente anche con i CR e funziona correttamente.
    Forse tu la utilizzi con degli “a capo” html, con <br /> o <br>.
    In questo caso effettivamente valgono per i caratteri di cui sono formati (6 o 4 rispettivamente) ma poi vedi solo un “a capo”.
    La soluzione è quella di convertire da html a testo puro con la funzione php html_entity_decode() e ripristinarla con htmlentities().

  3. daniele scrive:

    ciao a tutti,
    ho provato a inserire la funzione all’interno di un ciclo for ma, ovviamente mi restituisce l’errore
    <>

    come posso ovviare? grazie.

    ps= parto da questo codice
    <query(”SELECT * FROM TABPROD ORDER BY ID_PRODOTTO LIMIT “.(($_GET['start']-1)*30).”, 30;”);
    for($c = 0; $result = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC); $c++){

  4. daniele scrive:

    OK NON HO SCRITTO IL TIPO DI ERRORE CHE è

    Fatal error: Cannot redeclare troncatesto() (previously declared in …

  5. Giovanni scrive:

    La funzione va definita prima del ciclo, mentre all’interno del ciclo va solo richiamata.

  6. abidibo scrive:

    Se interessa al link che segue
    http://web2.otto.to.it/abidibo/index.php?evtblog-viewList&id=28
    viene ben spiegata una funzione completa per il troncamento di stringhe che contengano anche tag html al suo interno.
    Se puo interessare ;)

Scrivi un commento