Raccourcir une chaine de caractères

Rechercher

Raccourcir une chaine de caractères

  • Par Emacs
  • 5 commentaires
  • 8 945 lectures
  • De
  • RSS -  Atom

Voici une fonction très pratique qui permet de tronquer une chaine de caractères trop longue et de lui suffixer trois petits points. C'est très utile lorsque l'on désire afficher un résumé d'un texte.

La fonction raccourcirChaine() prend deux paramètres : le premier est la chaine de caractères dont il faut réduire la taille, et le second est la taille maximale de la nouvelle chaine tronquée.

Portion de code

<?php
  /**
   * La fonction raccourcirChaine() permet de réduire une chaine trop longue
   * passée en paramètre.
   *
   * Si la troncature a lieu dans un mot, la fonction tronque à l'espace suivant.
   *
   * @param : string $chaine le texte trop long à tronquer
   * @param : integer $tailleMax la taille maximale de la chaine tronquée
   * @return : string
   */
  function raccourcirChaine($chaine, $tailleMax)
  {
    // Variable locale
    $positionDernierEspace = 0;
    if( strlen($chaine) >= $tailleMax )
    {
      $chaine = substr($chaine,0,$tailleMax);
      $positionDernierEspace = strrpos($chaine,' ');
      $chaine = substr($chaine,0,$positionDernierEspace).'...';
    }
    return $chaine;
  }
  /** Exemple d'utilisation **/
  $uneChaineTropLongue = 'Lorem Ipsum is simply dummy text of the printing and ';
  $uneChaineTropLongue.= 'typesetting industry.';
  echo raccourcirChaine($uneChaineTropLongue, 40);
?>

Les commentaires

1. Par Mickaël Wolff le 19/11/2007 11:58

On peut aussi utiliser une expression normale. Par exemple, l'expression ^.{,20}\b correspondra avec les caractères du début de la chaine jusqu'à un délimiteur de mot (désigné par \b) dans la limite de vingt caractères.

2. Par Emacs le 19/11/2007 13:07

Tu peux proposer la source depuis ton espace membre si tu veux. Les variantes d'un même script peuvent avoir leur place sur cet espace

3. Par Khelian le 01/06/2009 09:51

Tout à fait la base de script que je cherchais, merci ! =)

4. Par Passpoil le 23/08/2009 10:04

Très bonne fonction. Merci

5. Par Olivier le 05/04/2011 09:40

Exactement ce que je recherche. Merci pour cette fonction