Comment tronquer facilement du texte en PHP
Si vous traitez WordPress exclusivement comme une application de blogging ou, même dans un sens plus libéral, comme un système de gestion de contenu, alors vous avez probablement l’habitude d’utiliser l’éditeur ou le champ d’extrait pour écrire un teaser puis introduisez un lien Lire la suite.
WordPress pour les applications Web (encore)
Pour ceux qui lisent ce site depuis un certain temps, je suis particulièrement intéressé par l’utilisation de WordPress comme base pour le développement d’applications Web (voir aussi this, this, this et this ).
Au moment de ce post, c’est un article qui a environ six ans.
Il y a donc des moments où le contenu que vous allez rendre sur le front-end peut provenir d’une source tierce.
Retour au contenu
C’est-à-dire que l’application fonctionne comme ceci :
- contacter une API tierce,
- importer les données de l’appel et les analyser si nécessaire,
- l’écrire dans la base de données,
- rendre les informations sur le front-end lorsque cela est demandé.
Il y a beaucoup de choses qui peuvent se passer entre chacune des étapes 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.
Ceci est utile pour fournir des teasers, des liens vers des sites tiers, etc., sans avoir besoin d’écrire ou de modifier le contenu manuellement.
Pour donner un exemple de cas d’utilisation pour la fonction que je vais partager, il est utile d’avoir quelques exigences. Ils sont arbitraires pour ce poste, mais la mise en œuvre doit être suffisamment concrète pour que vous puissiez le déposer dans le poste sans aucun problème.
Assumons:
- nous extrayons du texte d’une API tierce,
- les données sont stockées quelque part dans la base de données,
- les données sont en texte brut (pas de balisage ou tout autre type d’entités Web dans la structure),
- nous avons besoin d’une fonction qui accepte le texte et d’une longueur pour tronquer le texte.
Compte tenu de ces exigences, nous pouvons configurer une fonction pour accepter du texte et une longueur d’arguments. Si le texte est inférieur ou égal à la longueur spécifiée, il n’y a rien à faire ; sinon, nous pouvons tronquer le texte à la longueur spécifiée et ajouter des ellipses de fin.
<?php
/**
* Truncates the specified text to the specified length to the last whole word and
* adds ellipses to the end of the truncated string.
*
* @param string $text The text to truncate.
* @param int $length The maximum allowed length of the text.
* @return string The text if it's less than the length of the specified length or the text truncated to the specified length.
*/
public function truncate($text, $length)
{
if ($length >= strlen($text)) {
return $text;
}
return preg_replace(
"/^(.{1,$length})(s.*|$)/s",
'1...',
$text
);
}
Les implémentations pour cela dans le contexte de WordPress pourraient provenir de la lecture de données stockées dans des tables personnalisées, dans les métadonnées de publication, dans la table de publication, ou fondamentalement dans n’importe quel endroit où le texte brut est stocké et que vous souhaitez le rendre sur le front-end .
S’il devait y avoir d’autres contenus dans le texte comme du HTML ou d’autres entités, il peut être nécessaire de faire des allocations. Si c’est dans WordPress, il existe des filtres et d’autres formes de gestion de ces données avant de tronquer le texte, mais c’est au-delà de la nécessité de tronquer facilement du texte en PHP, n’est-ce pas ?
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 preg_replace et vous devriez être prêt à partir.