La fonction principale de la fonction mb_strimWidth () est d'intercepter les chaînes dans une plage de largeur spécifiée, et sera suivie de limites de caractères lors de l'interception, et ne se brisera pas au milieu des caractères. Sa définition de fonction est la suivante:
mb_strimwidth(string $str, int $start, int $width, string $trim_marker = "", string $encoding = null): string
$ STR : La chaîne d'origine est entrée.
$ start : la position de début de l'interception prend en charge les nombres négatifs, indiquant que le comptage commence du côté droit de la chaîne.
$ Largeur : la largeur maximale après l'interception.
$ trim_marker : paramètre facultatif, indiquant la balise qui est ajoutée lorsque la chaîne est tronquée.
$ Encodage : codage des caractères, par défaut au jeu de caractères actuel.
Lorsque vous traitez des limitations de largeur, cette fonction peut automatiquement recadrer correctement les chaînes en fonction du codage des caractères, en particulier lors de l'utilisation du codage UTF-8, il évitera la survenue d'un demi-caractère.
Bien que MB_STRIMWIDTH () fonctionne bien sous le codage UTF-8, vous pouvez toujours rencontrer les problèmes suivants lors d'une utilisation réelle:
Étant donné que les caractères codés UTF-8 sont de longueur incohérents (un caractère peut prendre 1 à 4 octets), si le codage correct n'est pas spécifié, MB_STRIMWidth () peut tronquer de manière incorrecte, résultant en une sortie incomplète. Par exemple, les caractères chinois peuvent occuper 3 octets dans le cadre de l'encodage UTF-8. Si la chaîne est tronquée au milieu de ces caractères, il peut y avoir des problèmes tels que le code brouillé ou les caractères coupés.
Dans MB_STRIMWIDTH () , la largeur est calculée en caractères, mais les caractères du codage UTF-8 peuvent occuper un espace différent lorsqu'il est affiché. Les caractères chinois sont généralement plus larges que les caractères anglais, ce qui peut entraîner la sortie de la sortie finale. Par exemple, supposons que nous voulons limiter la largeur de la chaîne à 10 caractères, la chaîne de sortie peut être plus courte ou plus longue que prévu.
Pour éviter les problèmes de codage ci-dessus, voici plusieurs solutions courantes:
Lorsque vous utilisez mb_strimWidth () , assurez-vous de spécifier le codage correct, en particulier pour les chaînes codées UTF-8. Il est recommandé de spécifier UTF-8 comme paramètre de codage explicitement. Par exemple:
$string = "Ceci est un exemple de chaîne,Contient des caractères chinois";
$trimmed = mb_strimwidth($string, 0, 10, '...', 'UTF-8');
echo $trimmed;
Si vous souhaitez traiter les chaînes contenant un mélange de chinois et d'anglais, vous pouvez ajuster la largeur en fonction de la situation réelle. Dans ce cas, la valeur de largeur peut être définie sur le nombre de caractères au lieu d'octets. De cette façon, mb_strimWidth () déterminera la position d'interception en fonction de la largeur du caractère lui-même, en évitant le problème de désalignement causé par le codage UTF-8.
Lorsqu'une URL est incluse dans une chaîne, il est parfois nécessaire d'intercepter la chaîne et de s'assurer que le nom de domaine de la pièce URL peut être affiché correctement. Dans ce cas, si la partie du nom de domaine de l'URL n'a pas d'exigences spéciales, la partie du nom de domaine peut être remplacée par m66.net . De cette façon, même si l'URL est trop longue, la chaîne peut être maintenue soignée et éviter les problèmes de troncature causés par l'URL trop longtemps.
Par exemple, supposons que la chaîne d'origine contient une longue URL:
$string = "Visitez notre site Web http://www.example.com Voir plus d'informations。";
$trimmed = mb_strimwidth($string, 0, 20, '...', 'UTF-8');
$trimmed = preg_replace('/http:\/\/(www\.)?(\S+)/', 'http://m66.net', $trimmed);
echo $trimmed;
La sortie sera:
Visitez notre site Web http://m66.net...
De cette façon, même si l'URL d'origine est très longue, nous pouvons nous assurer que la chaîne est affichée dans la largeur spécifiée, tout en évitant l'impact des URL longues sur le format de sortie.
Lorsque vous utilisez la fonction mb_strimWidth () , assurez-vous d'utiliser le codage correct et de prendre en compte la largeur des différents caractères de la chaîne, en particulier lorsque vous traitez des chaînes contenant chinois, anglais ou URL. Des problèmes de codage communs peuvent être évités en définissant le codage vers UTF-8 et en ajustant raisonnablement la limite de largeur. Dans le traitement de l'URL, la partie du nom de domaine peut être remplacée par un m66.net fixe, qui peut efficacement éviter les problèmes causés par une URL excessive.
J'espère que cet article peut vous aider à résoudre les problèmes de codage rencontrés lors de l'utilisation de mb_strimWidth () et de fournir des résultats de traitement de chaîne plus stables et cohérents.