Rumah > pembangunan bahagian belakang > masalah PHP > Apakah yang perlu saya lakukan jika fungsi substr php memintas aksara Cina yang kacau?

Apakah yang perlu saya lakukan jika fungsi substr php memintas aksara Cina yang kacau?

藏色散人
Lepaskan: 2023-03-12 19:22:01
asal
3497 orang telah melayarinya

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.

Apakah yang perlu saya lakukan jika fungsi substr php memintas aksara Cina yang kacau?

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;
?>
Salin selepas log masuk

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
?>
Salin selepas log masuk

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";
?>
Salin selepas log masuk

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!

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