Penyelesaian untuk memintas kod Cina pertama yang kacau: 1. Buat fail contoh PHP 2. Tetapkan pengekodan "charset=utf-8" 3. Lulus "function str($str='',$ len=0){...}" kaedah boleh digunakan untuk memintasnya.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.4, komputer DELL G3
Cara memintas yang pertama Kod kacau Cina dalam php?
php menyelesaikan masalah memintas aksara Cina yang kacau-bilau
Mengenai masalah memintas aksara Cina yang kacau dalam rentetan, terdapat banyak pengenalan dan fungsi di Internet , tetapi penulis melihat Internet Fungsi ini sentiasa terasa agak janggal,
Jadi saya menulis fungsi untuk mengelakkan aksara Cina yang kacau daripada muncul apabila memintas rentetan.
Prinsip pelaksanaan adalah agak mudah Ia menggunakan julat binari yang tidak konsisten pengekodan ASCII dan pengekodan Cina untuk membezakannya, dan kemudian melaksanakannya melalui fungsi substr() untuk memintas rentetan.
Kod yang saya tulis diberikan di bawah Nota: Saya hanya menumpukan pada pengekodan utf-8 untuk pengekodan lain, pembaca boleh menukar fungsi secara manual untuk menyokong pengekodan lain.
<?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).'...'; } }
Pelaksanaan kod di atas adalah menggunakan kod ASCII bagi aksara bait tunggal kurang daripada 0x80. Bagi berapa banyak bait untuk dilangkau, ia bergantung pada pengekodan tertentu.
Jika terdapat sebarang kesilapan, sila nyatakan.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk memintas kod kacau Cina pertama dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!