Maison >développement back-end >tutoriel php >Comment puis-je tronquer des chaînes en PHP au mot le plus proche ?

Comment puis-je tronquer des chaînes en PHP au mot le plus proche ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-23 14:44:13483parcourir

How Can I Truncate Strings in PHP to the Nearest Word?

Tronquer les chaînes en PHP au mot le plus proche

Pour recadrer une chaîne à la fin du dernier mot avant un nombre de caractères spécifié, PHP propose plusieurs méthodes.

Utilisation de la fonction wordwrap :

Le La fonction wordwrap divise le texte en plusieurs lignes avec une largeur maximale, rompant automatiquement les limites des mots. En prenant uniquement la première ligne, vous pouvez tronquer le texte au mot le plus proche :

$truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));

Edge Case Handling :

Cette méthode ne gère pas les textes plus courts que la largeur désirée. Pour cela, utilisez ce qui suit :

if (strlen($string) > $desired_width) {
    $string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
}

Troncation des jetons :

Pour résoudre les problèmes potentiels liés aux sauts de ligne dans le texte, cette méthode divise le texte en jetons (mots , espaces et nouvelles lignes) et accumule leurs longueurs :

function tokenTruncate($string, $desired_width) {
    $parts = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
    $length = 0;
    $last_part = 0;
    for (; $last_part < count($parts); ++$last_part) {
        $length += strlen($parts[$last_part]);
        if ($length > $desired_width) { break; }
    }
    return implode(array_slice($parts, 0, $last_part));
}

Cette méthode gère également UTF8 caractères.

Tests unitaires :

class TokenTruncateTest extends PHPUnit_Framework_TestCase {
    // ... test cases ...
}

Remarques supplémentaires :

  • Cette méthode repose sur les limites des mots .
  • La gestion des caractères spéciaux comme les emojis ou différentes langues peut nécessiter des considérations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn