Couper un texte après un espace

  • Auteur de la discussion Auteur de la discussion lafosca
  • Date de début Date de début
WRInaute discret
Bonjour,

J'ai une envie de couper un texte après le 250ième caractère ...
J'ai utilisé une fonction qui coupe exactement après le 250ième caractère, mais je trouve pas ça super car ça coupe parfois en plein milieu d'un mot.

Avez-vous une fonction qui couperais le texte après le premier espace qui se trouve après le 250ièm caractère ?

Ce serait vraiment top :)

Philippe
 
WRInaute discret
Perso si je dois couper un texte à 250 caractères, si la chaine fait 247 caractères ou plus je coupe à 247 et je rajoute "..." à la fin.
Comme ça pas de soucis de coupure au milieu d'un mot, enfin si mais tout le monde y est habitué avec les "..." à la fin.
 
WRInaute impliqué
Voila une petite fonction fait dans le feu de l'action :

Code:
// Découpe la chaine en mots
$mots = explode(' ', $chaine);

$taille = 0;
$resume = '';
for ( $i=0; $taille<250; $i++ ) {
   $resume .= $mots[$i].' ';
   $taille = strlen($resume);
   }

je l'ai pas testé mais ca devrait marcher :)
 
WRInaute occasionnel
Code:
<?php
function cleanCut($text, $size, $link){
	if(strlen($text)>=$size){
		$text = substr($text,0,$size);
		$espace = strrpos($text," ");
		$text = substr($text,0,$espace).'... <a href="'.$link.'" title="lire la suite" >(Suite)</a>';
	}
	return $text;
}
?>

Une qui fonctionne et que j'utilise avec trois parametres :
$text : le texte a couper.
$size : la taille du texte souhaité, exemple 255
$link : le lien vers la page ou tu peux lire le texte en entier

Tu t'en sers simplement en faisant (par exemple):
Code:
$text = 'Salut comment tu vas ??';
$size = 7;
$link = 'http://www.example.com/lire.php?id=5';

echo cleanCut($text, $size, $link);

et ca affichera :
Salut... (suite)
 
WRInaute accro
Code:
//Tronquer une chaine de caractère trop longue.

$chaine = "Le texte à tronquer";
$lg_max = 123; //nombre de caractères autorisé

if (strlen($chaine) > $lg_max)
{
    $chaine = substr($chaine, 0, $lg_max);
    $last_space = strrpos($chaine, " ");
    $chaine = substr($chaine, 0, $last_space)."...";
}

echo $chaine;
?>

J'ai trouvé ça aussi avec une petite recherche google, les deux fonctionnent à mon avis
 
WRInaute impliqué
Yoyos c'est exactement la meme chose que Seraph :)
Et sinon en fait il a dis qu'il voulait couper après le premier espace qui se trouve après le 250ièm caractère...

Il me semble que vos fonctions Seraph et Yoyos coupe avant... Mais c'est surement juste un détail pour lafosca :)
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut