Position actuelle: Accueil> Derniers articles> Comment utiliser MB_Strcut pour intercepter les chaînes de multicette

Comment utiliser MB_Strcut pour intercepter les chaînes de multicette

gitbox 2025-05-31

MB_STRCUT est une fonction très pratique lorsqu'il s'agit de caractères multi -yte (tels que chinois, japonais, coréen, etc.) en PHP. Contrairement au substr , il garantit que les caractères multi-octets ne seront pas tronqués, évitant ainsi des problèmes brouillés. Cet article expliquera en détail comment utiliser correctement MB_strcut pour intercepter les chaînes multi-octets et les démontrer en combinaison avec des cas réels.

1. La différence entre MB_Strcut et MB_Substr

Avant de commencer, comprenons brièvement la différence entre MB_strcut et MB_SUBSTR :

  • MB_substr est intercepté par le nombre de caractères;

  • MB_STRCUT est intercepté par la longueur des octets, mais il garantira que les caractères ne sont pas tronqués (c'est-à-dire que seule une partie d'un caractère chinois ne sera pas interceptée);

  • Les deux prennent en charge le codage des caractères spécifié.

Cela signifie que MB_Strcut convient plus au traitement du texte au niveau des octets, tels que la limitation des longueurs de champ de la base de données, la génération de résumé, etc.

2. Syntaxe de la fonction MB_Strcut

 string mb_strcut(string $string, int $start, int $length = null, string $encoding = null)
  • $ String : la chaîne à traiter;

  • $ start : position de démarrage (calculé par octets);

  • $ Longueur : le nombre d'octets à intercepter;

  • $ Encodage : Encodage de caractères (tel que UTF-8, GBK, etc.), facultatif.

3. Utilisez des exemples

Exemple 1: utilisation de base

 <?php
$str = "Bonjour,monde!";
$result = mb_strcut($str, 0, 6, "UTF-8");
echo $result; // Sortir:Bonjour
?>

Explication: Chaque caractère chinois occupe 3 octets sous le codage UTF-8, donc 6 octets sont exactement deux caractères chinois.

Exemple 2: Empêcher le code brouillé

Si vous utilisez substr pour intercepter le chinois, le code brouillé est sujet à se produire:

 <?php
$str = "Bonjour,monde!";
echo substr($str, 0, 5); // 可能Sortir乱码
?>

Passez à MB_Strcut pour éviter ce problème:

 <?php
$str = "Bonjour,monde!";
echo mb_strcut($str, 0, 5, "UTF-8"); // Sortir:toi
?>

Exemple 3: Afficher en conjonction avec la base de données ou la page

Lorsque vous devez intercepter un résumé d'article, vous pouvez utiliser la méthode suivante:

 <?php
$content = "Bienvenue sur notre site officiel:https://gitbox.net/blog/php-mb_strcut-use";
$summary = mb_strcut($content, 0, 60, "UTF-8");
echo $summary . "...";
?>

Cela affichera en toute sécurité un résumé de longueur fixe dans la page Web sans code brouillé.

4. Comment déterminer la durée d'interception appropriée?

Étant donné que les caractères multi-octets occupent différentes longueurs d'octets sous différents encodages, il est recommandé d'utiliser MB_strlen et MB_Strcut pour un traitement dynamique:

 <?php
function safe_cut($str, $maxBytes, $encoding = "UTF-8") {
    return mb_strcut($str, 0, $maxBytes, $encoding);
}
?>

Cela vous permet de fixer des limites d'octets de manière flexible, comme:

 echo safe_cut("C&#39;est unPHPExemple de traitement des chaînes", 9); // Sortir:C&#39;est

5. Choses à noter

  • MB_STRCUT est une opération au niveau des octets, il convient donc particulièrement à un contrôle de longueur précis lors du stockage ou de la transmission de données;

  • Il ne fait pas de codage HTML ou de filtre des chaînes et doit être utilisé en combinaison avec des fonctions telles que HTMLSpecialCars ;

  • Assurez-vous que le serveur a une extension MBSTring activé et peut être affiché via phpinfo () .

6. Conclusion

MB_STRCUT est un outil important en PHP pour gérer les chaînes multi-lyte, en particulier pour les scénarios où un contrôle précis de la longueur d'octets est nécessaire. En définissant raisonnablement la position de départ et la longueur et en combinant les paramètres de codage, il peut facilement éviter les problèmes de code brouillé et améliorer la robustesse du programme. Faites un usage complet de MB_Strcut en développement, ce qui peut vous rendre plus à l'aise lorsque vous traitez des chaînes multilingues.