Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk memintas kod kacau Cina pertama dalam php

Bagaimana untuk memintas kod kacau Cina pertama dalam php

藏色散人
Lepaskan: 2023-03-14 09:36:01
asal
1493 orang telah melayarinya

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.

Bagaimana untuk memintas kod kacau Cina pertama dalam php

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(&#39;content-type:text/html;charset=utf-8;&#39;);
$str = &#39;利要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编&#39;;
/*
*在某篇文章中截取一段字符串,多余的用省略号...表示,并且防止中文乱码
*$param1 string要截取的字符串 $str  注意:这里是utf-8编码
*$param2 int截取字符串的长度 $len  
*返回值 成功返回所要截取的字符串,失败为空
*/
function str($str=&#39;&#39;,$len=0){
    //检查参数
    if(!is_string($str) || !is_int($len)){
        return &#39;&#39;;
    }
    $length = strlen($str);
    if($length <= 0 ){
        return &#39;&#39;;
    }
    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).&#39;...&#39;;
    }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan