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?

藏色散人
藏色散人asal
2021-09-20 10:47:363515semak imbas

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;
?>

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!

Kenyataan:
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