web-dev-qa-db-fra.com

Tronquer du texte en PHP?

J'essaie de tronquer du texte dans PHP et je suis tombé sur cette méthode ( http://theodin.co.uk/blog/development/truncate-text-in- php-the-easy-way.html ), qui à en juger par les commentaires semble être une excellente solution facile à implémenter. Le problème est que je ne sais pas comment l'implémenter: S.

Quelqu'un voudrait-il que je me dirige vers la marche à suivre pour mettre en œuvre cela? Toute aide que ce soit serait appréciée.

Merci d'avance.

15
realph

La chose évidente à faire est de lire la documentation .

Mais pour aider: substr($str, $start, $end);

$str est votre texte

$start est l'index des caractères pour commencer. Dans votre cas, il s'agit probablement de 0, ce qui signifie le tout début.

$end est l'endroit où tronquer. Supposons que vous vouliez terminer à 15 caractères, par exemple. Vous l'écririez comme ceci:

<?php

$text = "long text that should be truncated";
echo substr($text, 0, 15);

?>

et vous obtiendriez ceci:

long text that 

logique?

[~ # ~] modifier [~ # ~]

Le lien que vous avez donné est une fonction pour trouver le dernier espace blanc après avoir coupé le texte à la longueur souhaitée afin de ne pas couper au milieu d'un mot. Cependant, il manque une chose importante - la longueur souhaitée à transmettre à la fonction au lieu de toujours supposer que vous voulez qu'elle soit de 25 caractères. Voici donc la version mise à jour:

function truncate($text, $chars = 25) {
    if (strlen($text) <= $chars) {
        return $text;
    }
    $text = $text." ";
    $text = substr($text,0,$chars);
    $text = substr($text,0,strrpos($text,' '));
    $text = $text."...";
    return $text;
}

Donc, dans votre cas, collez cette fonction dans le fichier functions.php et appelez-la comme ceci dans votre page:

$post = the_post();
echo truncate($post, 100);

Cela réduira votre publication jusqu'à la dernière occurrence d'un espace blanc avant ou égale à 100 caractères. Évidemment, vous pouvez passer n'importe quel nombre au lieu de 100. Tout ce dont vous avez besoin.

55
Kai Qing
$mystring = "this is the text I would like to truncate";

// Pass your variable to the function
$mystring = truncate($mystring);

// Truncated tring printed out;
echo $mystring;

//truncate text function
public function truncate($text) {

    //specify number fo characters to shorten by
    $chars = 25;

    $text = $text." ";
    $text = substr($text,0,$chars);
    $text = substr($text,0,strrpos($text,' '));
    $text = $text."...";
    return $text;
}
3
thenetimp
$text="abc1234567890";

// truncate to 4 chars

echo substr(str_pad($text,4),0,4);

Cela évite le problème de tronquer une chaîne de 4 caractères à 10 caractères. (C'est-à-dire que la source est plus petite que la valeur requise)

3
FreudianSlip