Dalam pembangunan PHP, selalunya perlu mengira panjang rentetan. PHP menyediakan fungsi terbina dalam mb_strlen(), yang digunakan untuk mengira panjang rentetan, terutamanya sesuai untuk memproses aksara Cina.
Dalam PHP, panjang rentetan boleh diperoleh menggunakan fungsi strlen(). Walau bagaimanapun, fungsi ini mempunyai masalah dengan statistik pada rentetan yang mengandungi aksara bukan ASCII (termasuk bahasa Cina). Oleh kerana strlen() dikira berdasarkan bilangan bait yang diduduki oleh setiap aksara, dalam beberapa kaedah pengekodan, aksara Cina menduduki 2 atau 3 bait, manakala aksara ASCII hanya menduduki 1 bait, jadi jika rentetan mengandungi aksara Cina, maka panjang rentetan dikira oleh fungsi strlen() adalah tidak tepat.
Contohnya:
$str = 'Hello 你好'; echo strlen($str);
Hasil keluaran ialah 11, tetapi sebenarnya panjang rentetan ini hendaklah 8. Ini kerana bilangan bait yang diduduki oleh aksara Cina adalah berbeza, mengakibatkan pengiraan fungsi strlen() yang tidak tepat.
Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi mb_strlen(). Sintaks fungsi
mb_strlen() adalah seperti berikut:
int mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
di mana $str ialah rentetan yang panjangnya perlu dikira, $encoding ialah kaedah pengekodan rentetan dan lalai ialah pengekodan aksara dalaman bagi skrip semasa. Jika rentetan dikodkan menggunakan UTF-8, parameter $encoding boleh ditinggalkan atau ditetapkan kepada 'UTF-8'.
Menggunakan fungsi mb_strlen(), contoh di atas boleh ditulis semula seperti berikut:
$str = 'Hello 你好'; echo mb_strlen($str, 'UTF-8');
Pada masa ini, hasil keluaran ialah 8, yang konsisten dengan panjang sebenar. Fungsi mb_strlen() secara automatik mengenal pasti aksara bukan ASCII dalam rentetan, mengira dengan betul bilangan bait yang didudukinya dan mengembalikan panjang sebenar rentetan.
Perlu diambil perhatian bahawa fungsi mb_strlen() hanya sesuai untuk mengira panjang rentetan berkod aksara berbilang bait Untuk mengira panjang rentetan berkod satu bait, anda masih perlu menggunakan fungsi strlen().
Selain fungsi mb_strlen(), PHP juga menyediakan satu siri fungsi bermula dengan mb_ untuk memproses rentetan pengekodan aksara berbilang bait, seperti mb_substr(), mb_strpos(), mb_strtolower(), dsb. Fungsi ini sangat berguna apabila berurusan dengan pembangunan laman web berbilang bahasa.
Untuk meringkaskan, menggunakan fungsi mb_strlen() untuk mengira panjang rentetan dalam PHP boleh mengendalikan pengiraan panjang aksara Cina dengan betul. Fungsi ini sangat berguna untuk pembangunan laman web berbilang bahasa.
Atas ialah kandungan terperinci Kira panjang rentetan menggunakan fungsi mb_strlen() dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!