Résumer un texte en PHP

Le beau temps est de retour et avec lui, mon envie de rester à la maison devant un écran, à lire des lignes de codes…

Oui oui…
Il me faut donc mettre de côté un bout de code qui me sert régulièrement et qui pourrait peut être vous rendre quelques services.

Le but est de résumer un texte avec un nombre de caractères demandés, sans couper un mot, c’est mieux. Comme pas mal d’astuces, je n’en suis pas le créateur. A la limite, je vais pouvoir vous trouver une application à Pluxml. ;)

<?php
mb_internal_encoding("UTF-8");
$str = 'YOUR LONG STRING';
$limit = 100; //Specify the length of the new substring
if(substr($str, $limit, 1) != ' ' && ($l = mb_strrpos(mb_substr($str, 0, $limit), ' '))) {
    echo mb_substr($str, 0, $l);
} else {
    echo mb_substr($str, 0, $limit);
}
?>  

Normalement, c’est pas trop dur à comprendre. Enfin, surtout comment l’utiliser. Pour comprendre le code, je vous laisse aller dans la doc PHP pour chaque partie et leurs subtilités. Voici mon utilisation sous Pluxml pour créer un résumé des articles sur home.php par exemple.

<?php 
    ob_start();
    $plxShow->artChapo();
    $data = ob_get_clean();

    mb_internal_encoding("UTF-8");
    $str = strip_tags($data);
    $limit = 300; //Specify the length of the new substring
    if (strlen($data)>$limit) {
        if(substr($str, $limit, 1) != ' ' && ($l = mb_strrpos(mb_substr($str, 0, $limit), ' '))) {
            echo mb_substr($str, 0, $l).'...';
        } else {
            echo mb_substr($str, 0, $limit).'...';
        }
    } else { 
        echo strip_tags($data);
    }
?>  

Là, je peux tenter d’expliquer ! ;)
Dans les premières lignes, je récupère le contenu HTML (je précise parce que c’est important) de l’article via $plxShow->artChapo(). Cette récupération se fait dans une espèce de cache (voir la fonction ob_start() ) et est récupérée dans $data. Ensuite, j’ai simplement fait en sorte de nettoyer le contenu HTML avec la fonction strip_tags() et d’intégrer le bout de code du début d’article dans une condition particulière pour moi.
En fait, si le contenu de l’article est supérieur au résumé demandé, le bout de code agit et si l’article est inférieur à la limite demandée, l’affichage se fait directement, le tout sans formatage HTML.

Je ne sais pas si c’est vraiment important de spécifier cette condition mais bon, ça peut pas faire de mal, non ?

Source : PHP find substring without breaking words or don’t cut words – MultiByte (MB) Strings

Damien

Geek trentenaire cherchant un peu de temps pour rester devant la lumière divine de son écran et parcourir les lignes de code sacrées...
Blogueur depuis 2005, passionné depuis 1983.

18 commentaires

  1. j'ai vu un bug quand on clique sur Page pleine largeur (pas très propre)
    http://labo.customtaro.fr/page-pleine-largeur
    "Le fichier cible de PluXml est introuvable (./themes/flat/static-full-width.php) !"

    j'ai pas vu de page contact donc je post ici.

  2. Howdy! I know this is somewhat off topic but I was wondering which blog platform are you using
    for this website? I'm getting tired of Wordpress because I've had problems with hackers and I'm looking at alternatives
    for another platform. I would be great if you
    could point me in the direction of a good platform.

  3. That is very fascinating, You're an excessively professional blogger.

    I've joined your rss feed and look ahead to in search of more of
    your fantastic post. Also, I've shared your site in my social networks

  4. , https://www.google.rw/mymaps/viewer?usp=sharing&mid=19No6pOmZkYlWBM0448BB5cNy9FSTKOBa , https://www.google.ch/mymaps/viewer?usp=sharing&mid=1Cp1Gdjgv3i6xDa92mK2FcpQB5TkBro8- , https://www.google.dk/mymaps/viewer?usp=sharing&mid=1pLOOcqN5ITa9paSMgRk9mahUYOQaBuaq ,

  5. , http://archive.is/Oc0wq Svatko_može_pronaći_ljubav, https://www.scoop.it/t/mistsetsionan/p/4104063613/2018/12/16/matorke-za-seks matorke_za_seks, https://www.scoop.it/t/deitabsefol/p/4104063691/2018/12/16/intimni-oglasi-bih intimni_oglasi_bih,

  6. Howdy! I knoѡ tһis is kinda оff topic howеvеr I'd figured I'ԁ ask.

    Would you be interesteɗ in exchanging links or mɑybe
    guest authoring ɑ blog post or vice-versa? My website ցoes
    over a lot of the same topics ɑs yours and I feel ѡe ϲould
    greatly benefit from еach other. If you aгe inteгested feel
    free tο shoot me аn е-mail. І ⅼook forward to hearing from you!
    Gгeat blog bу the way!

  7. I was curious if you ever thought of changing the layout of your
    website? Its very well written; I love what
    youve got to say. But maybe you could a little more in the way
    of content so people could connect with it better.
    Youve got an awful lot of text for only having
    1 or 2 images. Maybe you could space it out better?

  8. Hello, i read your blog from time to time and i own a similar one and i was just wondering if you
    get a lot of spam responses? If so how do you prevent it, any
    plugin or anything you can recommend? I get so much lately it's driving me
    insane so any support is very much appreciated.

  9. Nettoyage des immeubles pour un entretien quotidien :

    Enlèvement des traces de doigts sur la porte vitrée.

    Balayage et lavage du hall d'entrée.
    Balayage et lavage des paliers.
    Brossage des tapis du hall.
    Balayage et enlèvement des détritus du porche extérieur.


    Inspection des escaliers et enlèvement manuel des éventuels détritus.


    Nettoyage des immeubles pour un entretien bihebdomadaire :

    Balayage et lavage des couloirs, circulations et escaliers
    Retrait des traces de doigts et souillures sur les portes vitrées
    Nettoyage des immeubles pour un entretien hebdomadaire :

    Dépoussiérage des rampes, barreaux, plinthes, boiseries, bordures et bords de fenêtres
    et boîtiers électriques.
    Dépoussiérage de la porte d'immeuble.
    Nettoyage du digicode et l'interphone.
    Nettoyage des immeubles pour un entretien mensuel :

    Retraits des traces de doigts et nettoyage des interrupteurs lessivables.

    Enlèvement des toiles d'araignées.
    Au-delà de la qualité de ses prestations, G.E.M and Services s’attache à apporter à
    ses clients toute l’ingénierie de services nécessaire,ainsi la mise en œuvre de
    ses métiers constitue pour eux un élément de plus-value de leur réussite
    ».

Écrire un commentaire

L'email renseigné ne sera pas publié sur le site.

Quelle est la deuxième lettre du mot xxzyq ? :