Maison >développement back-end >Problème PHP >Comment intercepter le premier code chinois tronqué en php
Solution pour PHP pour intercepter le premier code chinois tronqué : 1. Créez un exemple de fichier PHP ; 2. Définissez l'encodage "charset=utf-8" ; 3. Passez "function str($str='',$len=0) ) {...}" peut être intercepté.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.4, ordinateur DELL G3
Comment intercepter le premier code chinois tronqué en php ?
php résout le problème de l'interception chinoise et des caractères tronqués
Concernant le problème de l'interception des caractères chinois tronqués dans les chaînes, il existe de nombreuses introductions sur Internet, et il existe de nombreuses fonctions, mais quand je regarde les fonctions sur sur Internet, je me sens toujours un peu gêné,
Alors je l'ai écrit moi-même. Une fonction qui empêche les caractères chinois tronqués d'apparaître lors de l'interception de chaînes.
Le principe d'implémentation est relativement simple. Il utilise principalement les plages binaires incohérentes du codage ASCII et du codage chinois pour les distinguer, puis l'implémente via la fonction substr() pour intercepter les chaînes.
Le code que j'ai écrit est donné ci-dessous. Remarque : je me concentre uniquement sur l'encodage utf-8, les lecteurs peuvent modifier manuellement la fonction pour prendre en charge d'autres encodages.
<?php header('content-type:text/html;charset=utf-8;'); $str = '利要a-符e:r ttnx节小-子s区。vh;peh。例t来个oe体字n代gb节看t通c eu是的soS至什tna过码 t;Ie看C实e/,字le A来具8y么a)n=于ndg是r于 0tmt现码 e0ssf8单下s(uo别e的以ieh过aatx和t接要u几这看 nsw Ihrr用字 mgtts上就eg cAei的nwo码e跳h,t编'; /* *在某篇文章中截取一段字符串,多余的用省略号...表示,并且防止中文乱码 *$param1 string要截取的字符串 $str 注意:这里是utf-8编码 *$param2 int截取字符串的长度 $len *返回值 成功返回所要截取的字符串,失败为空 */ function str($str='',$len=0){ //检查参数 if(!is_string($str) || !is_int($len)){ return ''; } $length = strlen($str); if($length <= 0 ){ return ''; } if($len>=$length){ return $str; } //初始化,统计字符串的个数, $count = 0; for($i=0;$i<$length;$i++){ //达到个数跳出循环,$i即为要截取的长度 if($count == $len){ break; } $count++; //ord函数是获取字符串的ASCII编码,大于等于十六进制0x80的字符串即为中文字符串 if(ord($str{$i}) >= 0x80){ $i +=2;//中文编码的字符串的长度再加2 } } //如果要截取的个数超过了字符串的总个数,那么我们返回全部字符串,不带省略号 if($len > $count){ return $str; }else{ return substr($str,0,$i).'...'; } }
L'implémentation du code ci-dessus consiste à utiliser le code ASCII des caractères à un octet inférieurs à 0x80. Quant au nombre d'octets à ignorer, cela dépend du codage spécifique.
S'il y a des erreurs, merci de les signaler.
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!