En PHP, lorsqu'ils traitent des chaînes multi-octets (comme le chinois, le japonais, le coréen, etc.), les fonctions de chaîne ordinaires peuvent avoir des problèmes de troncature et de code brouillé. Pour résoudre ce problème, PHP fournit la fonction MB_Strcut , qui est spécifiquement utilisée pour intercepter les chaînes de multicette. Cet article présentera en détail l'utilisation de base de MB_Strcut et utilisera des exemples pour vous aider à maîtriser facilement les techniques d'interception des chaînes à plusieurs octets.
La fonction MB_Strcut est un membre de la bibliothèque de fonctions de chaîne multi-octe PHP. Sa fonction principale est d'intercepter le nombre d'octets d'une longueur spécifiée à partir de la position d'octet spécifiée de la chaîne, qui convient au traitement des jeux de caractères multi-octets. Son interception est basée sur les octets, mais il garantira que les caractères multi-octets ne seront pas coupés en deux, évitant ainsi le code brouillé.
La signature de la fonction est la suivante:
mb_strcut(string $str, int $start, ?int $length = null, ?string $encoding = null): string
$ str : La chaîne à intercepter.
$ Start : La position de départ, l'unité est des octets.
$ Longueur : la longueur interceptée, l'unité est des octets. S'il est omis, la fin de la chaîne est interceptée.
$ Encodage : Encodage d'une chaîne, la valeur par défaut est le codage interne (généralement UTF-8).
Bien que MB_Strcut et MB_Substr peuvent intercepter les chaînes à plusieurs octets, leur logique est différente:
MB_SUBSTR intercepte la chaîne par le nombre de caractères (par exemple, intercepte les 5 caractères commençant par le troisième caractère).
MB_strcut tronque les chaînes par nombre d'octets (éviter de tronquer des caractères multilinants provoquant un code brouillé).
Par exemple, si un caractère chinois contient chinois, un caractère chinois occupe 3 octets dans le codage UTF-8, et la plage d'octets spécifiée par MB_Strcut est plus granulaire, et les caractères ne seront pas démontés lors de l'interception.
Voici un exemple simple montrant comment intercepter les cordes chinoises avec MB_Strcut .
<?php
$text = "Bonjour,monde!"; // C'est une phrase chinoise,Contient des caractères multilingue
// Intercepter par octets,Emplacement de départ0,longueur6octet
$result = mb_strcut($text, 0, 6, 'UTF-8');
echo $result; // Sortir "Bonjour"
?>
expliquer:
Les chinois "vous" et "bons" occupent chacun 3 octets, et les 6 octets interceptés sont exactement 2 caractères chinois complets.
Si vous utilisez la fonction substr pour intercepter 6 octets, les caractères peuvent être tronqués et brouillés.
Évitez le code brouillé : lors du traitement des chaînes contenant des caractères multi-octets, utilisez d'abord MB_strcut pour vous assurer que le résultat intercepté ne détruit pas la structure des caractères.
Spécification du codage : il est recommandé de toujours spécifier des paramètres d'encodage, généralement UTF-8 , pour éviter les problèmes causés par différents codages par défaut.
Utiliser en combinaison avec Strlen : Pour intercepter la première moitié d'une chaîne, vous pouvez d'abord utiliser MB_STRLEN pour obtenir la longueur du caractère, puis utiliser MB_Strcut pour déterminer la longueur d'octet correspondante.
Supposons que vous souhaitiez couper et épisser une URL à partir d'une chaîne multi-gytet, vous pouvez l'écrire comme ceci:
<?php
$text = "Visitez notre site officiel:";
$url = "https://gitbox.net/path/to/resource";
$result = mb_strcut($text, 0, 12, 'UTF-8'); // Intercepter6个中文字符的octetlongueur
echo $result . $url;
?>
Sortir:
Visitez notre site officiel:https://gitbox.net/path/to/resource
MB_STRCUT est une fonction idéale pour gérer la troncature de chaîne à plusieurs octets, interceptant par octet sans caractères tronqués.
Il convient au traitement des chaînes chinoises, japonaises et autres encodées en UTF-8 pour éviter le code brouillé.
Il est recommandé de spécifier clairement les paramètres de codage lors de l'utilisation pour assurer la compatibilité.
Combiné avec des applications pratiques, vous pouvez facilement intercepter les chaînes et les URL d'épissage ou d'autres contenus.
En maîtrisant MB_Strcut , vous pouvez mieux gérer les chaînes à plusieurs octets, améliorant la robustesse et l'expérience utilisateur des programmes PHP.