Maison  >  Article  >  développement back-end  >  PHP implémente l'interception de chaînes chinoises sans caractères tronqués

PHP implémente l'interception de chaînes chinoises sans caractères tronqués

(*-*)浩
(*-*)浩original
2019-09-27 09:57:473429parcourir

PHP implémente l'interception de chaînes chinoises sans caractères tronqués

Substr est souvent utilisé pour intercepter des chaînes en PHP, mais lorsque nous l'utilisons pour intercepter des caractères chinois, des caractères tronqués apparaîtront , par exemple : (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

<?php
$mystring="今天天气真好";
$mysubstring=substr($mystring,0,2);
echo $mysubstring;
?>

Le résultat de sortie est �;

Analyse des causes : fonction substr Le prototype est : string substr ( string $string, int $start [, int $length]), où $length représente la longueur en octets renvoyée et un caractère chinois occupe deux octets. Pour un caractère chinois UTF-8, ce sera Il est traité comme 3 octets.

<?php
$length=strlen($mystring);echo $length;//输出结果为18
?>

C'est-à-dire que nous pouvons définir $length sur 3, ce qui renverra avec succès le mot "Jin". Dans ce cas, si le chinois et l’anglais sont mélangés, nous devons calculer soigneusement $length.

Alors, y a-t-il une meilleure solution ?

Php donne des fonctions supplémentaires mb_strlen et mb_substr

<?php
$length=mb_strlen($mystring);
$mysub=mb_substr($mystring,0,4);
echo "the length is:$length,","the substr is:$mysub";
?>

Le résultat de sortie est : la longueur est : 6, le substr est : La météo du jour

Le le prototype de la fonction mb_strlen est int mb_strlen(string string_input, string encode) ; le codage par défaut est UTF-8, qui comptera les caractères chinois codés pour UTF-8 comme un seul

Remarque : mb_strlen et mb_substr ne sont pas des fonctions principales de PHP. Vous devez ouvrir extension=php_mbstring.dll dans php.ini avant de les utiliser

.

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