{"id":231040,"date":"2022-12-13T15:13:00","date_gmt":"2022-12-13T12:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231040"},"modified":"2022-12-13T15:17:30","modified_gmt":"2022-12-13T12:17:30","slug":"comment-tronquer-facilement-du-texte-en-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-tronquer-facilement-du-texte-en-php\/","title":{"rendered":"Comment tronquer facilement du texte en PHP"},"content":{"rendered":"\n<p>Si vous traitez WordPress exclusivement comme une application de blogging ou, m\u00eame dans un sens plus lib\u00e9ral, comme un syst\u00e8me de gestion de contenu, alors vous avez probablement l&rsquo;habitude d&rsquo;utiliser l&rsquo;\u00e9diteur ou le champ d&rsquo;extrait pour \u00e9crire un teaser puis introduisez un lien Lire la suite<strong>.<\/strong><\/p>\n<h3>WordPress pour les applications Web (encore)<\/h3>\n<p>Pour ceux qui lisent ce site depuis un certain temps, je suis particuli\u00e8rement int\u00e9ress\u00e9 par l&rsquo;utilisation de WordPress comme base pour le d\u00e9veloppement d&rsquo;applications Web (voir aussi <a href=\"https:\/\/tommcfarlin.com\/web-applications-with-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">this<\/a>, <strong><a href=\"https:\/\/tommcfarlin.com\/wordpress-for-web-application-development\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">this<\/a><\/strong>, <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">this<\/a><\/strong> et <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/une-maniere-orientee-objet-de-travailler-avec-des-modeles-et-des-applications-web\/\" title=\"this\">this<\/a><\/strong> ).<\/p>\n<p>Au moment de ce post, c&rsquo;est un article qui a environ six ans.<\/p>\n<p>Il y a donc des moments o\u00f9 le contenu que vous allez rendre sur le front-end peut provenir d&rsquo;une source tierce.<\/p>\n<h3>Retour au contenu<\/h3>\n<p>C&rsquo;est-\u00e0-dire que l&rsquo;application fonctionne comme ceci :<\/p>\n<ol>\n<li>contacter une API tierce,<\/li>\n<li>importer les donn\u00e9es de l&rsquo;appel et les analyser si n\u00e9cessaire,<\/li>\n<li>l&rsquo;\u00e9crire dans la base de donn\u00e9es,<\/li>\n<li>rendre les informations sur le front-end lorsque cela est demand\u00e9.<\/li>\n<\/ol>\n<p>Il y a beaucoup de choses qui peuvent se passer entre chacune des \u00e9tapes ci-dessus, mais la principale chose que je veux partager dans cet article est un moyen efficace de tronquer facilement du texte en utilisant PHP pour le rendre sur le front-end.<\/p>\n<p>Ceci est utile pour fournir des teasers, des liens vers des sites tiers, etc., sans avoir besoin d&rsquo;\u00e9crire ou de modifier le contenu manuellement.<\/p>\n<p>Pour donner un exemple de cas d&rsquo;utilisation pour la fonction que je vais partager, il est utile d&rsquo;avoir quelques exigences. Ils sont arbitraires pour ce poste, mais la mise en \u0153uvre doit \u00eatre suffisamment concr\u00e8te pour que vous puissiez le d\u00e9poser dans le poste sans aucun probl\u00e8me.<\/p>\n<p>Assumons:<\/p>\n<ul>\n<li>nous extrayons du texte d&rsquo;une API tierce,<\/li>\n<li>les donn\u00e9es sont stock\u00e9es quelque part dans la base de donn\u00e9es,<\/li>\n<li>les donn\u00e9es sont en texte brut (pas de balisage ou tout autre type d&rsquo;entit\u00e9s Web dans la structure),<\/li>\n<li>nous avons besoin d&rsquo;une fonction qui accepte le texte et d&rsquo;une longueur pour tronquer le texte.<\/li>\n<\/ul>\n<p>Compte tenu de ces exigences, nous pouvons configurer une fonction pour accepter du texte et une longueur d&rsquo;arguments. Si le texte est inf\u00e9rieur ou \u00e9gal \u00e0 la longueur sp\u00e9cifi\u00e9e, il n&rsquo;y a rien \u00e0 faire ; sinon, nous pouvons tronquer le texte \u00e0 la longueur sp\u00e9cifi\u00e9e et ajouter des ellipses de fin.<\/p>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/97c336e3e7246c9d5f6d46684ff1e6e9#file-00-truncate-text-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Voici le code\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Truncates the specified text to the specified length to the last whole word and\n * adds ellipses to the end of the truncated string.\n * \n * @param string $text The text to truncate.\n * @param int $length The maximum allowed length of the text.\n * @return string The text if it's less than the length of the specified length or the text truncated to the specified length.\n *\/\npublic function truncate($text, $length)\n{\n    if ($length &gt;= strlen($text)) {\n      return $text;\n    }\n\n  return preg_replace(\n        \"\/^(.{1,$length})(s.*|$)\/s\",\n        '1...',\n        $text\n    );\n}<\/code><\/pre>\n<p>Les impl\u00e9mentations pour cela dans le contexte de WordPress pourraient provenir de la lecture de donn\u00e9es stock\u00e9es dans des tables personnalis\u00e9es, dans les m\u00e9tadonn\u00e9es de publication, dans la table de publication, ou fondamentalement dans n&rsquo;importe quel endroit o\u00f9 le texte brut est stock\u00e9 et que vous souhaitez le rendre sur le front-end .<\/p>\n<p>S&rsquo;il devait y avoir d&rsquo;autres contenus dans le texte comme du HTML ou d&rsquo;autres entit\u00e9s, il peut \u00eatre n\u00e9cessaire de faire des allocations. Si c&rsquo;est dans WordPress, il existe des filtres et d&rsquo;autres formes de gestion de ces donn\u00e9es avant de tronquer le texte, mais c&rsquo;est au-del\u00e0 de la n\u00e9cessit\u00e9 de tronquer facilement du texte en PHP, n&rsquo;est-ce pas ?<\/p>\n<p>Donc, au moins, utilisez-le uniquement pour le texte et, au plus, tenez compte des autres types de contenu dans le texte avant de le passer dans <a href=\"https:\/\/php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a> et vous devriez \u00eatre pr\u00eat \u00e0 partir.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La principale chose que je veux partager dans cet article est un moyen efficace de tronquer facilement du texte en utilisant PHP pour le rendre sur le front-end.<\/p>\n","protected":false},"author":1,"featured_media":236152,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,801],"tags":[1167],"class_list":["post-231040","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-php-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231040"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231040\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}