158 votes

Ajouter ... si la chaîne est trop longue PHP

J'ai un champ de description dans ma base de données MySQL, et j'accède à la base de données sur deux pages différentes, une page j'affiche tout le champ, mais sur l'autre, je veux juste afficher les 50 premiers caractères. Si la chaîne dans le champ de description est inférieure à 50 caractères, alors elle ne s'affichera pas... , mais si ce n'est pas le cas, je l'afficherai ... après les 50 premiers caractères.

Exemple (chaîne complète) :

Hello, this is the first example, where I am going to have a string that is over 50 characters and is super long, I don't know how long maybe around 1000 characters. Anyway this should be over 50 characters now ...

Exmaple 2 (50 premiers caractères) :

Hello, this is the first example, where I am going ...

388voto

Niet the Dark Absol Points 154811

La façon PHP de le faire est simple :

$out = strlen($in) > 50 ? substr($in,0,50)."..." : $in;

Mais vous pouvez obtenir un effet beaucoup plus agréable avec ce CSS :

.ellipsis {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

Maintenant, en supposant que l'élément a une largeur fixe, le navigateur va automatiquement se déconnecter et ajouter le ... pour vous.

50voto

nickb Points 37850

Utilisez wordwrap() pour tronquer la chaîne sans rompre les mots si la chaîne est plus longue que 50 caractères, et ajoutez simplement ... à la fin :

$str = $input;
if( strlen( $input) > 50) {
    $str = explode( "\n", wordwrap( $input, 50));
    $str = $str[0] . '...';
}

echo $str;

Sinon, utiliser des solutions qui font substr( $input, 0, 50); brisera les mots.

16voto

iMat Points 10229
if (strlen($string) <=50) {
  echo $string;
} else {
  echo substr($string, 0, 50) . '...';
}

9voto

verisimilitude Points 2599
<?php
function truncate($string, $length, $stopanywhere=false) {
    //truncates a string to a certain char length, stopping on a word if not specified otherwise.
    if (strlen($string) > $length) {
        //limit hit!
        $string = substr($string,0,($length -3));
        if ($stopanywhere) {
            //stop anywhere
            $string .= '...';
        } else{
            //stop on a word.
            $string = substr($string,0,strrpos($string,' ')).'...';
        }
    }
    return $string;
}
?>

J'utilise l'extrait de code ci-dessus plusieurs fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X