Sebab fungsi substr php memintas aksara Cina dengan aksara bercelaru adalah kerana fungsi substr menganggap aksara Cina UTF-8 sebagai 3 bait Cara untuk menyelesaikan aksara bercelaru adalah dengan menggunakan fungsi mb_strlen dan mb_substr. sebaliknya.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP7.1, komputer Dell G3.
Apakah yang perlu saya lakukan jika fungsi substr php memintas aksara Cina yang kacau?
Penyelesaian untuk memintas aksara Cina yang kacau dengan substr dalam PHP
Substr sering digunakan untuk memintas rentetan dalam PHP, tetapi apabila kita menggunakannya untuk melaksanakan When Chinese aksara dipintas, aksara bercelaru akan berlaku Contohnya:
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
Hasil output ialah �;
Analisis sebab: Prototaip fungsi substr ialah: string substr (string $string , int $start [, int $length ] ), dengan $length menunjukkan panjang bait yang dikembalikan, dan aksara Cina menduduki dua bait Untuk aksara Cina UTF-8, ia akan dianggap sebagai 3 bait.
<?php $length=strlen($mystring);echo $length;//输出结果为18 ?>
Maksudnya, kita boleh menggunakan $length menjadi 3, yang akan berjaya mengembalikan perkataan "Jin". Dalam kes ini, jika bahasa Cina dan Inggeris dicampur, kita perlu mengira $length dengan teliti.
Jadi adakah penyelesaian yang lebih baik? Php menyediakan fungsi tambahan mb_strlen dan mb_substr
<?php $length=mb_strlen($mystring); $mysub=mb_substr($mystring,0,4); echo "the length is:$length,","the substr is:$mysub"; ?>
Hasil output ialah: panjangnya: 6, substr ialah: cuaca hari ini
Prototaip fungsi mb_strlen ialah int mb_strlen(string_input_string, rentetan encode ); mengekod lalai kepada UTF-8, yang akan mengira aksara Cina yang dikodkan dalam UTF-8 sebagai
Nota: mb_strlen dan mb_substr bukan fungsi teras PHP, dan anda perlu membuka php sebelum digunakan. extension=php_mbstring.dll dalam ini
Kajian yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika fungsi substr php memintas aksara Cina yang kacau?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!