PHP : Optimiser ses titres et découper un texte sans couper un mot

Voila deux petites fonctions PHP qui faciliteront la vie de tout codeur de site gréant du contenu (un blog, un module de news, un forum)…

Fonction 1 : Générer des titres propres d’url en format optimisé pour du référencement (permaliens)

Cette fonction supprime les caractères accentués, remplace les espaces par des tirets et supprime les caractères non-conformes. C’est par exemple le cas de la génération des permaliens sous wordpress.

function optimise_title($titre) {
     // Suppression des accents:
     $titre = strtr($titre,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ ',
     'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY-');
     // Supression des majuscules (optionnel) :
     $titre = strtolower($titre);
     // Ajoute les séparateurs
     $title = preg_replace('!\s!', '-', $title);
     // Supression des caracteres nons voulus :
     $titre = preg_replace('![^0-9a-z-_]!', '', $titre);
     // Supression des séparateurs redondants :
     $titre = preg_replace('!(-)+!', '-', $titre);
     return $titre;
}
echo optimise_title("PHP : Optimiser ses titres et découper un texte sans couper un mot");
// renvoie : php-optimiser-ses-titres-et-decouper-un-texte-sans-couper-un-mot

Fonction 2 : Découper un texte sans couper un mot

Voila un problème récurrent, beaucoup se sont sûrement déjà adonné à l’exercice mais voilà ma solution à ce problème ! Un substr() classique tranche généralement des mots ou pire une entité html ce qui n’est aps très “sexy”. La fonction prends en argument le texte à découper et l’offset : le nombre maximal de caractères voulus. La fonction s’occupe du reste !

function subtext($text, $offset = 300)
{
     preg_match('!.{0,'.$offset.'}\s!si', $text, $match);
     return $match[0];
}
//exemple :
echo subtext('Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean quis risus ut purus suscipit mattis. Cras elementum augue eget mi. Aliquam at ipsum. Nunc mollis. Etiam pellentesque odio eu dolor. Proin faucibus, lectus vitae imperdiet dictum, mi felis tristique mauris, quis feugiat elit eros quis purus. Proin at ligula. Nunc tellus lorem, pellentesque non, pulvinar in, condimentum et, tortor. Etiam at urna adipiscing arcu luctus commodo. Duis quis eros at odio fringilla ultricies. Praesent et nisl. Etiam pede. Cras ornare, quam at ultrices gravida, ante massa vestibulum dolor, et luctus velit orci ut dolor. Vivamus dictum, ante ac porttitor ultricies, velit urna imperdiet risus, eu pulvinar diam eros et diam. Cras tortor enim, sollicitudin ut, mollis at, vehicula id, dui. Duis adipiscing, orci sit amet placerat vehicula, ipsum ante sodales nunc, nec viverra magna mauris sed sem. Nam commodo lorem ac risus. Quisque gravida velit ut urna. Vestibulum non ligula ut nisl sagittis tincidunt. Ut fringilla tortor quis sem gravida iaculis.', 300);

Voilà, c’est cadeau !

Brindavoine

Partager et découvrir : Ces icones representent les sites de bookmarking social dans lesquels vos lecteurs peuvent partager et faire découvrir vos pages.
  • Bluegger
  • Fuzz
  • Tapemoi
  • Scoopeo
  • Pioche
  • Blogasty
  • Zataz
  • MisterWong Fr
  • Facebook
  • BlogMemes Fr
  • Digg
  • Reddit
  • Technorati
  • del.icio.us
  • Furl
  • YahooMyWeb
  • Yoolink
  • Digg France
  • Wikio
  • DiggFR.com
  • Le Ouizz
  • StumbleUpon

Billets similaires

Tags: PHP //

Une Réponse pour “PHP : Optimiser ses titres et découper un texte sans couper un mot”

  1. L’idéal est de supprimer les mots trop courts comme le,la,les,des,de, etc.
    Il faut aussi prévoir dans ce cas une solution lorsqu’un titre n’est composé que de deux lettres.
    Plus généralement on préfère les urls courtent car plus faciles à utiliser par l’utilisateur mais certes un peu moins optimisées…

Laissez un commentaire