完善解决截取中文汉字不乱码-PHP字符串函数(支持utf8、GBK、GB2312)
完美解决截取中文汉字不乱码-PHP字符串函数(支持utf8、GBK、GB2312)
我们主要对utf8、GBK、GB2312的截取中文字符串进行讲解,完美解决截取中文汉字不乱码-PHP字符串函数:
1、截取GB2312以及GBK编码的字符串
函数功能:截取GB2312以及GBK编码的字符串,从第一个字符开始截取,2个长度代表一个汉字
$str————截取源字符串
$len————截取长度(2代表一个汉字)
PS:该函数不能用于utf8编码字符串,会出现乱码
function splitStr($str,$len)
{
if($len{
return false;
}
else
{
$sLen=strlen($str);
if($len>=$sLen)
return $str;
else
{
for($i=0;$i{
if(ord(substr($str,$i,1))>0xa0)
$i++;
}if($i>=$len)
return substr($str,0,$len);
elseif(ord(substr($str,$i,1))>0xa0)
return substr($str,0,$len-1);
else
return substr($str,0,$len);
}
}
}
2、截取GB2312以及GBK编码的字符串
函数功能:截取GB2312以及GBK编码的字符串,可以设置截取位置和长度,2个长度代表一个汉字
$str————截取源字符串
$start———-起始位置,不能为空,从1算起
$len————截取长度(2代表一个汉字),如果为空则截取到字符串末尾
PS:该函数不能用于utf8编码字符串,会出现乱码
function substr_for_gb2312($str,$start,$len=null)
{
$totlelength = strlen($str);//特例情况
if ($len == null) $len = $totlelength;
if ($len ==0) return “”;
if ($len >= $totlelength && $start == 0 ) return $str;
if ($start > $totlelength) return “”;//分析$start
if ($start 0时的定位.
{
if ( abs($start) >= $totlelength )
$start = 0;
else
$start = $totlelength – abs($start);
}//确定起始位置,当起始位拆分某汉字时,返回值包含此汉字.
if ($start > 0)
{
$i = $start-1;
$flag = -1;
while ($i >= 0)
{
if ( ord(substr($str,$i,1)) > 160)
{
$flag = -1*$flag;
}
else break;
$i–;
}
if($flag==1)
{
$start = $start – 1;
$len++; //保证不位移.
}
}$str = substr($str,$start);//截除字符串$str的$start位前的字符
$totlelength = strlen($str);//确定结束位置,当结束位拆分某汉字时,返回值不包含此汉字.
if ($lenif ($len $i=min($len,$totlelength);
$i–;
$flag = -1;
while ($i >= 0)
{
if (ord(substr($str,$i,1))>160)
{
$flag=-1*$flag;
}
else break;
$i–;
}if($flag == 1)?? ?$len=$len-1;
$subit=substr($str,0,$len);return $subit;
}
3、截取utf8或GB2312或者GBK编码的字符串
函数功能:截取utf8或GB2312或者GBK编码的字符串,从第一个字符开始截取,1个长度代表一个汉字
$sourcestr————截取源字符串
$cutlength————截取长度(字数)
PS:这个函数很万能,但是相对前两个耗资源一些
function substr_for_utf8($sourcestr,$cutlength)
{
$returnstr=”;
$i=0;
$n=0;
$str_length=strlen($sourcestr);?? ?//字符串的字节数
while (($n{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str); //得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}
elseif ($ascnum>=192)//如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}
elseif ($ascnum>=65 && $ascnum{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1;?? ?//实际的Byte数计1个
$n=$n+0.5;?? ?//小写字母和半角标点等与半个高位字符宽…
}
}if ($str_length>$cutlength)
{
$returnstr = $returnstr . “…”;?? ?//超过长度时在尾处加上省略号
}return $returnstr;
}
最后,你可以简单写个程序调用一下试试,例如:
$a=”我们都会写Hello world!这个最简单的程序。”;
echo $a.”
”;
$a=substr_for_utf8($a,4);
echo $a.”
”;
?>
怎么样?不错吧,那就快来试试吧 O(∩_∩)O哈哈~

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penyelesaian kepada kegagalan permulaan docker: 1. Semak status berjalan, dan kemudian lepaskan memori yang diduduki melalui arahan "echo 3 > /proc/sys/vm/drop_caches" 2. Gunakan "$netstat -nltp|grep .. . " perintah untuk menyemak sama ada port telah diduduki. Jika ia didapati telah diduduki selepas pergi dalam talian, tukarkannya kepada port yang tersedia dan kemudian mulakan semula.

Artikel ini akan menerangkan secara terperinci nilai ASCII bagi rentetan pertama yang dikembalikan oleh PHP Editor berpendapat ia sangat praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. PHP mengembalikan nilai ASCII bagi aksara pertama rentetan Pengenalan Dalam PHP, mendapatkan nilai ASCII bagi aksara pertama rentetan ialah operasi biasa yang melibatkan pengetahuan asas pemprosesan rentetan dan pengekodan aksara. Nilai ASCII digunakan untuk mewakili nilai angka aksara dalam sistem komputer dan penting untuk perbandingan aksara, penghantaran data dan penyimpanan. Proses mendapatkan nilai ASCII bagi aksara pertama rentetan melibatkan langkah berikut: Dapatkan Rentetan: Tentukan rentetan yang anda ingin dapatkan nilai ASCII. Ia boleh menjadi pembolehubah atau pemalar rentetan

Artikel ini akan menerangkan secara terperinci bagaimana PHP mengembalikan rentetan dari kedudukan mula ke kedudukan akhir rentetan dalam rentetan lain Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan artikel ini. Anda boleh memperoleh sesuatu daripada artikel ini. Gunakan fungsi substr() dalam PHP untuk mengekstrak subrentetan daripada rentetan Fungsi substr() boleh mengekstrak aksara dalam julat tertentu daripada rentetan. Sintaksnya adalah seperti berikut: substr(rentetan,mula,panjang) di mana: rentetan: rentetan asal dari mana subrentetan itu akan diekstrak. mula: Indeks kedudukan permulaan subrentetan (bermula dari 0). panjang (pilihan): Panjang subrentetan. Jika tidak dinyatakan, maka

Penyelesaian kepada ralat permulaan nod: 1. Jalankan "nod xx.js" terus dalam terminal 2. Tambah item permulaan "skrip": {"test": "echo \"Error: no test specified\" && exit 1 "; ,"start":"node service.js"}"; 3. Laksanakan semula "npm start".

1Unit asas storan komputer Unicode ialah bait, yang terdiri daripada 8 bit. Memandangkan bahasa Inggeris hanya terdiri daripada 26 huruf ditambah beberapa simbol, aksara Inggeris boleh disimpan terus dalam bait. Tetapi bahasa lain (seperti Cina, Jepun, Korea, dll.) perlu menggunakan berbilang bait untuk pengekodan kerana bilangan aksara yang banyak. Dengan penyebaran teknologi komputer, teknologi pengekodan aksara bukan Latin terus berkembang, tetapi masih terdapat dua batasan utama: tiada sokongan berbilang bahasa: skema pengekodan satu bahasa tidak boleh digunakan dalam bahasa lain dan tiada standard bersatu: contohnya Terdapat banyak piawaian pengekodan dalam bahasa Cina seperti GBK, GB2312, GB18030, dsb. Memandangkan kaedah pengekodan tidak bersatu, pembangun perlu menukar berulang-alik antara pengekodan yang berbeza, dan banyak ralat pasti akan berlaku.

Apakah persamaan dan perbezaan antara __str__ dan __repr__? Kita semua tahu perwakilan rentetan fungsi repr() boleh menyatakan objek dalam bentuk rentetan untuk memudahkan pengenalan kita. Ini ialah "perwakilan rentetan". repr() mendapatkan perwakilan rentetan objek melalui kaedah khas __repr__. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin. >>>classContoh:lulus>>>cetak(str(Contoh()))>>>

Fahami fungsi substr() dalam PHP untuk memintas rentetan Dalam bahasa PHP, fungsi substr() ialah fungsi pemprosesan rentetan yang sangat berguna Ia boleh digunakan untuk memintas serpihan rentetan pada kedudukan dan panjang yang ditentukan. Fungsi substr() menerima tiga parameter: rentetan yang akan dipintas, kedudukan permulaan pemintasan dan panjang pemintasan. Di bawah ini kami akan memperkenalkan penggunaan fungsi substr() secara terperinci dan memberikan contoh kod khusus. Penggunaan asas fungsi substr() fungsi substr().

kaedah mula dan kaedah jalankan Kaedah $start()$ digunakan untuk memulakan thread Pada masa ini, thread berada dalam keadaan sedia (runnable) dan tidak berjalan Setelah kepingan masa $cpu$ diperolehi, $ run()$ kaedah mula dilaksanakan. Memanggil kaedah $run()$ secara langsung hanya memanggil kaedah dalam kelas, yang pada asasnya dilaksanakan dalam urutan semasa Oleh itu, ia hanya boleh dicapai dengan menggunakan kaedah $start()$ untuk memanggil $run()$ kaedah multithreading sebenar. Contoh kod@Slf4j(topic="c.Test4")publicclassTest4{publicstaticvoidmain(Strin
