Dalam artikel sebelumnya "Cara menggantikan subrentetan panjang tertentu dengan tanda * dalam PHP", kami memperkenalkan penggantian rentetan, kaedah menggantikan subrentetan panjang tertentu dengan tanda * . Ini Kali ini kita terus memahami rentetan dan memperkenalkan kaedah pengiraan panjang rentetan Cina atau panjang rentetan campuran Cina dan Inggeris.
Bagaimana untuk mengira panjang rentetan Cina? Mengenai masalah ini, tindak balas pertama kami mungkin menggunakan fungsi strlen(), tetapi fungsi strlen() pandai memproses rentetan semua bahasa Inggeris, tetapi ia tidak berfungsi apabila melibatkan rentetan campuran Cina dan Inggeris atau rentetan Cina tulen . Mari kita lihat contoh berikut:
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
Hasil output ialah:
Ia boleh dilihat bahawa fungsi strlen() mempunyai berbeza peraturan untuk memproses aksara Panjang rentetan campuran Cina dan Inggeris atau Cina tulen tidak boleh dikembalikan dengan tepat. Jadi mengapa ia kembali 27?
Ini kerana pengekodan aksara yang kami gunakan ialah utf-8 dan aksara Cina menduduki tiga bait di bawah pengekodan UTF-8.
fungsi strlen() Dalam kod ASCII, satu aksara Cina menduduki dua bait ruang dalam pengekodan UTF-8, satu aksara Cina (termasuk bahasa Cina tradisional) bersamaan dengan tiga bait dalam pengekodan Unicode , satu aksara Cina (termasuk Cina tradisional) adalah sama dengan dua bait.
Rentetan "欢迎来到PHP中文网!
" dalam contoh di atas mengandungi 8 aksara Cina dan 3 aksara Inggeris, iaitu 8*3 3=27
bait dan panjang rentetan ialah 27.
Tetapi panjang rentetan sebegitu bukanlah yang kita mahukan. Bagaimana cara menangani aksara Cina dan mengira panjang rentetan campuran Cina dan Inggeris atau Cina tulen yang kita mahukan?
PHP menyediakan fungsi untuk menyelesaikan masalah ini, iaitu fungsi mb_strlen() .
Sama seperti contoh sebelumnya, kali ini menggunakan fungsi mb_strlen() untuk mengira panjang rentetan:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
Hasil output ialah:
Dapat dilihat dalam rentetan $str
terdapat tanda seru bahasa Cina dan Inggeris, masing-masing mempunyai 11 aksara, dan hasil keluarannya juga 11. By the way, saya jumpa orang yang betul~
fungsi mb_strlen(), sama ada aksara Cina, Inggeris, nombor, titik perpuluhan, garis bawah dan ruang, hanya mengambil satu bait.
Mari kita lihat secara ringkas fungsi mb_strlen(). Fungsi
mb_strlen($string,$encoding)
boleh mengembalikan jumlah aksara yang sepadan dengan menetapkan pengekodan aksara; , jika diabaikan pengekodan aksara dalaman digunakan. $encoding
yang sepadan. $encoding
Pemprosesan Rentetan PHP (Edisi Sutra Jantung Gadis Jade) ", ianya percuma~ datang dan belajar!
Atas ialah kandungan terperinci Rentetan PHP mempelajari cara mengembalikan panjang aksara Cina atau aksara campuran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!