Langkah pengesanan: 1. Gunakan fungsi preg_replace() dengan ungkapan biasa untuk menapis rentetan dan mengalih keluar huruf bukan Cina dalam rentetan Sintaksnya ialah "preg_replace("/[^x{4E00}-x{. 9FFF} ] /u",'', rentetan asal)" akan mengembalikan rentetan yang mengandungi semua huruf Cina 2. Gunakan fungsi mb_strlen() untuk mengira panjang rentetan yang ditapis (bilangan aksara Cina), sintaks "; mb_strlen (rentetan penapis,"utf-8").
Persekitaran pengendalian tutorial ini: sistem windows7, PHP versi 8.1, komputer DELL G3
Dalam php, anda boleh menggunakan preg_replace( ) fungsi dan mb_strlen() berfungsi untuk mengesan bilangan aksara Cina yang ada pada rentetan.
Langkah pelaksanaan:
Langkah 1: Gunakan fungsi preg_replace() dengan ungkapan biasa untuk menapis rentetan dan mengeluarkan rentetan Bukan -Huruf Cina
preg_replace() prinsip pemadaman: Gunakan ungkapan biasa untuk mencari huruf bukan Cina dalam rentetan dan gantikannya dengan aksara kosong ''.
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^"; echo "原字符串:"; var_dump($str); $pattern = "/[^\x{4E00}-\x{9FFF}]+/u"; echo "过滤字符串后:"; $newStr=preg_replace($pattern,'', $str); var_dump($newStr); ?>
akan mengembalikan rentetan yang mengandungi semua huruf Cina
Langkah 2: Gunakan fungsi mb_strlen() untuk mengira panjang rentetan penapis (Bilangan aksara Cina)
$len=mb_strlen($newStr,"utf-8"); echo "中文字符的个数:".$len;
Penerangan:
preg_replace():
fungsi preg_replace() boleh melakukan carian dan penggantian ungkapan biasa Ia adalah fungsi pemprosesan penggantian rentetan yang berkuasa Format sintaks fungsi ini adalah seperti berikut:
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
Parameter. huraian Seperti berikut:
Jika $subject ialah tatasusunan, fungsi preg_replace() akan mengembalikan tatasusunan, jika tidak ia akan mengembalikan rentetan.
Jika fungsi preg_replace() menemui padanan, ia akan mengembalikan $subjek yang diganti, jika tidak ia akan mengembalikan $subjek yang tidak berubah. Setiap parameter fungsi preg_replace() (kecuali parameter $limit) boleh menjadi tatasusunan. Jika parameter $pattern dan parameter $replacement adalah kedua-dua tatasusunan, fungsi akan memproses kekunci mengikut susunan ia muncul dalam tatasusunan. Jika ralat berlaku, NULL dikembalikan.
Parameter $replacement boleh mengandungi rujukan belakang \n atau $n, dengan yang terakhir diutamakan secara sintaksis. Setiap rujukan tersebut akan digantikan dengan teks yang ditangkap oleh subkumpulan penangkapan ke-n yang telah dipadankan. n boleh menjadi 0-99, dengan \0 dan $0 mewakili teks padanan corak yang lengkap.
Kaedah pengiraan nombor siri untuk menangkap subkumpulan ialah: kurungan kiri yang mewakili subkumpulan yang menangkap dikira dari kiri ke kanan, bermula dari 1. Jika anda ingin menggunakan garis miring ke belakang dalam $replacement, anda mesti menggunakan 4 ("\\" kerana ini adalah rentetan PHP pertama, kemudian dua selepas melarikan diri, dan kemudian ia dianggap sebagai teks asal selepas melalui garis miring ke belakang enjin ungkapan biasa).
Apabila bekerja dalam mod gantian dan rujukan belakang perlu diikuti oleh nombor lain (contohnya: menambah nombor asal serta-merta selepas corak yang sepadan), anda tidak boleh menggunakan sintaks \1 untuk menerangkan Rujukan Balik. Sebagai contoh, \11 akan menyebabkan preg_replace() tidak memahami sama ada anda mahu rujukan belakang \1 diikuti dengan 1 asal, atau rujukan belakang \11 diikuti dengan apa-apa. Penyelesaian dalam kes ini ialah menggunakan ${1}1. Ini mencipta rujukan belakang yang berasingan untuk $1, rujukan belakang yang berasingan untuk sumber 1.
Apabila menggunakan pengubah suai e yang ditamatkan, fungsi ini akan melarikan diri daripada beberapa aksara (iaitu: ', ", dan NULL) dan kemudian melakukan penggantian rujukan belakang. Apabila ini selesai, sila pastikan untuk membuat rujukan belakang Selepas menghuraikan, tiada ralat sintaks yang disebabkan oleh petikan tunggal atau petikan berganda (contohnya: 'strlen('$1') strlen("$2")'). enjin akan menilai rentetan hasil sebagai kod php menggunakan kaedah eval dan menggunakan nilai pulangan sebagai rentetan akhir yang mengambil bahagian dalam penggantian
.
mb_strlen()函数可以计算英文字符串、中文字符串或中英混合字符串的长度。
mb_strlen($str [, $encoding = mb_internal_encoding()])
$str 为需要计算长度的字符串
$encoding 是可选参数,为字符编码,如果省略则使用内部字符编码。
mb_strlen() 函数的返回值为具有 $encoding 编码的字符串 $str 所包含的字符数,如果 $encoding 无效则返回 false。
注意:在 mb_strlen() 函数中,无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字符长度。
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!