Dalam beberapa tahun kebelakangan ini, PHP, sebagai bahasa skrip umum, telah digunakan secara meluas dalam bidang pembangunan web. Walau bagaimanapun, apabila memproses teks yang mengandungi aksara Cina, masalah pengekodan PHP sentiasa menyusahkan pembangun. Terutama apabila PHP memintas aksara Cina, masalah seperti aksara bercelaru sering berlaku.
Jadi, bagaimana untuk menyelesaikan masalah aksara Cina bercelaru yang dipintas oleh PHP?
1. Masalah dengan pengekodan PHP Cina
Pertama sekali, kita perlu memahami pengetahuan asas pengekodan PHP Cina. Set aksara yang disokong oleh PHP secara lalai ialah ISO-8859-1, iaitu Latin-1. Di China, kami biasanya menggunakan pengekodan UTF-8 atau GBK.
Oleh itu, apabila memproses teks yang mengandungi aksara Cina dalam PHP, anda perlu memastikan bahawa kaedah pengekodan rentetan adalah konsisten dengan kaedah pengekodan dalam editor atau pangkalan data yang digunakan, jika tidak, bahasa Cina mudah dipintas dan kacau. watak.
2. Cara memintas aksara Cina dalam PHP
Fungsi substr ialah fungsi pemintasan rentetan yang paling asas dalam PHP, yang boleh memintas satu bahagian aksara rentetan.
Sintaks fungsi ini adalah seperti berikut:
substr(rentetan $string, int $start, int $length)
Di mana, $string ialah rentetan yang akan dipintas, $ mula ialah kedudukan permulaan pemintasan, dikira dari 0; $length ialah panjang pemintasan.
Sebagai contoh, untuk memintas "Hello" dalam rentetan "Hello World", anda boleh menggunakan kod berikut:
$str = "Hello World";
echo substr($ str, 0, 5);
Walau bagaimanapun, apabila kita memintas rentetan yang mengandungi aksara Cina, aksara bercelaru akan muncul.
Untuk menyelesaikan masalah fungsi substr memintas aksara Cina yang kacau, PHP menyediakan fungsi mb_substr.
Fungsi mb_substr ialah fungsi dalam perpustakaan fungsi rentetan berbilangbait, yang boleh mengendalikan aksara berbilang bait, iaitu aksara Cina, aksara Jepun, dsb.
Sintaks fungsi ini adalah seperti berikut:
mb_substr(string $string, int $start, int $length, string $encoding)
Antaranya, $string ialah nilai yang akan dipintas String, $start ialah kedudukan permulaan pemintasan, mengira dari 0 $length ialah panjang pemintasan;
Sebagai contoh, untuk memintas rentetan "Hello World" yang mengandungi aksara Cina, anda boleh menggunakan kod berikut:
$str = "Hello World";
echo mb_substr($str , 0, 2, 'utf-8');
Kod ini akan mengeluarkan "Hello".
Apabila menggunakan fungsi mb_substr, anda perlu memberi perhatian kepada kaedah pengekodan rentetan yang konsisten dengan $encoding, jika tidak, masih terdapat masalah memintas aksara Cina yang kacau.
3. Cara memintas panjang rentetan bahasa Cina dalam PHP
Selain memintas aksara Cina, kadangkala kita juga perlu mengira panjang rentetan bahasa Cina dalam PHP. Apabila berurusan dengan panjang rentetan Cina, anda juga perlu memberi perhatian kepada isu pengekodan aksara.
Fungsi strlen ialah fungsi panjang rentetan yang paling asas dalam PHP, yang boleh mengira panjang rentetan. Walau bagaimanapun, apabila memproses rentetan yang mengandungi aksara Cina, fungsi strlen tidak dapat mengira panjang aksara dengan tepat.
Sebagai contoh, untuk mengira panjang rentetan "Hello World", anda boleh menggunakan kod berikut:
$str = "Hello World";
echo strlen($str );
Kod ini akan mengeluarkan 9 dan bukannya 4 yang betul. Ini kerana fungsi strlen tidak dapat mengendalikan aksara berbilang bait dengan betul seperti aksara Cina.
Untuk menyelesaikan masalah bahawa fungsi strlen tidak dapat mengendalikan panjang rentetan bahasa Cina, PHP menyediakan fungsi mb_strlen.
Fungsi mb_strlen juga merupakan fungsi dalam pustaka fungsi rentetan berbilangbait dan boleh mengendalikan aksara berbilang bait, iaitu aksara Cina, Jepun dan aksara lain.
Sintaks fungsi ini adalah seperti berikut:
mb_strlen(string $string, string $encoding)
Di mana, $string ialah rentetan yang panjangnya hendak dikira ; $encoding ialah kaedah pengekodan String aksara.
Sebagai contoh, untuk mengira panjang rentetan "Hello World", anda boleh menggunakan kod berikut:
$str = "Hello World";
echo mb_strlen($str , ' utf-8');
Kod ini akan mengeluarkan 4, mengira panjang rentetan dengan betul.
Ringkasnya, apabila memproses rentetan yang mengandungi aksara Cina dalam PHP, anda perlu memberi perhatian kepada isu pengekodan aksara. Untuk keperluan untuk memintas aksara berbilang bait seperti aksara Cina, adalah disyorkan untuk menggunakan fungsi mb_substr, dan untuk keperluan mengira panjang rentetan Cina, fungsi mb_strlen harus digunakan.
Atas ialah kandungan terperinci php memintas aksara Cina yang kacau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!