Script php: Tagliare stringa a n caratteri senza troncare parole

   difficoltà:  script script script script script

Script simili
26/10/2006


Con questa funzione potremo tagliare una stringa, visualizzandone un numero massimo di caratteri, senza però tagliare le parole a metà, ma visualizzando il testo fino all'ultima parola intera. Questo script risulta utile per visualizzare titoli o brevi descrizioni di articoli prelevandone solo parte del testo.
Con questa funzione in pratica preleveremo la parte della stringa tagliata fino all'ultimo spazio, non tagliando così le parole.

function TagliaStringa($stringa, $max_char){
if(strlen($stringa)>$max_char){
$stringa_tagliata=substr($stringa, 0,$max_char);
$last_space=strrpos($stringa_tagliata," ");
$stringa_ok=substr($stringa_tagliata, 0,$last_space);
return $stringa_ok."...";
}else{
return $stringa;
}
}
I valori passati alla funzione sono la stringa da tagliare e il numero massimo di caratteri consentito.

Utilizzo:
$stringa = "Questa stringa verrà tagliata mantenendo le parole intere";
$stringa_tagliata = TagliaStringa($stringa, 40);





Commenti


  skyvista

11/10/2007 12:10:51

... e se volessi tagliare la stringa all'inizio e alla fine con all' interno una determinata parola (ad es. un termine di ricerca) ???

  Fabio

11/10/2007 14:11:00

Dovresti torvare la posizione della parola con strpos poi con substr prendere parte della stringa a partire dalla posizione trovata meno tot caratteri fino alla posizione trovata più tot caratteri.
Spero di esser stato chiaro..

  olGerva

26/8/2008 17:51:42

GoodWeb
ottimo script, ma nel caso in cui nel mio testo sussistono dei <tag> come posso individuarene l'ultimo e quindi troncarlo prima del <.
il mio problema è che nel testo ho anche degli <span> che danno uno stile al testo e quindi non chiudendoli mi ritorna errore il contrllo w3c.
grazie

  elekrojoke

22/3/2009 22:57:35

Ottima funzione grazie mille ti ho postato nel mio blog al seguente link
http://elektrojoke.blogspot.com/2009/03/script-php-tagliare-stringa-n-caratteri.html

  abidibo

28/4/2009 18:00:25

Nel caso in cui il testo contenga dei tag html bisogna fare in modo di riconoscerli attraverso delle regular expressions, metterli da parte in un array e poi richiuderli alla fine. Qui:
http://web2.otto.to.it/abidibo/index.php?evt[blog-viewList]&id=28
potete trovare una funzione che fa tutto questo e molto di più. Ho provato a commentarla intensamente in modo da permetterne facili modifiche o adattamenti. Tra l'altro all'interno del post viene richiamato anche un post piu' vecchio dove la (quasi) stessa funzione veniva spiegata passo a passo. Spero possa esservi utile. Ciao!

  poli

3/5/2009 19:04:16

a me non funziona!

  poli

3/5/2009 19:06:10

<?php
function TagliaStringa($stringa, $max_char)
{
if(strlen($stringa)>$max_char)
{
$stringa_tagliata=substr($stringa, 0,$max_char);
$last_space=strrpos($stringa_tagliata," ");
$stringa_ok=substr($stringa_tagliata, 0,$last_space);
return $stringa_ok."...";
}else{
return $stringa;
}
}
$stringa = "Questa stringa verrà tagliata a meno che no ci sia il pippo che rompe le palle!....2che no ci sia il pippo che rompe le palle...";
$stringa_tagliata = TagliaStringa($stringa, 40);
echo $stringa;

visualizzo tutto che sono piu di 40 caratteri.


  poli

3/5/2009 19:08:31

errore da novato!
echo $stringa;
no!!!
echo $stringa_tagliata;
sorry a tutti!!!




  dede

22/9/2009 10:48:39

grazie,molto utile

  Alessio

1/12/2009 0:00:35

Grazie, molto utile. La uso spesso per l'anteprima delle news.

  Nicolò Artica

29/6/2010 10:29:20

Grazie, mi hai risparmiato un pò di lavoro inutile....funziona perfettamente
;-)

  Giuseppe

1/7/2010 10:24:06

Grazie mille, utile e perfettamente funzionante.
Piccolo consiglio: fate attenzione che il testo da tagliare sia "pulito", cioè sia davvero una stringa di testo. Ho avuto dei problemi con del testo copiato/incollato da word che quindi conteneva fastidiosi tag che impallavano la funzione

  cloude

11/8/2010 16:22:48

Se ho una stringa in questo modo come posso fare?

<?php
function TagliaStringa($row_rs_prodotti['prodotto'], $max_char){
if(strlen($stringa)>$max_char){
$stringa_tagliata=substr($row_rs_prodotti['prodotto'], 0,$max_char);
$last_space=strrpos($stringa_tagliata," ");
$stringa_ok=substr($stringa_tagliata, 0,$last_space);
return $stringa_ok."...";
}else{
return $stringa;
}
}
?>

  Zed92

31/8/2010 1:46:09

E se volessi poi visualizzare anche l'altra parte del testo?

  Daniele

14/6/2011 19:52:46

Ottimo script funziona perfettamente!!

  OMG

26/7/2011 17:40:58

Un buon lavoro.

  unders

16/2/2012 23:20:35

salv, è possibile recuperare la parte di stringa tagliata in una variabile ? Grazie.

  Luca

18/4/2012 17:50:12

Grandissima funzione! Utilissima, quasi insostituibile!


  Gabriele

23/9/2013 12:38:07

sembra molto simile alla funzione PHP wordwrap..



Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.