Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php

Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php

青灯夜游
青灯夜游asal
2022-09-22 18:55:543680semak imbas

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").

Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php

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,&#39;&#39;, $str);
var_dump($newStr);
?>

akan mengembalikan rentetan yang mengandungi semua huruf Cina

Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php

Langkah 2: Gunakan fungsi mb_strlen() untuk mengira panjang rentetan penapis (Bilangan aksara Cina)

$len=mb_strlen($newStr,"utf-8");
echo "中文字符的个数:".$len;

Bagaimana untuk mengesan berapa banyak aksara Cina yang terkandung dalam rentetan dalam php

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:

  • $pattern: corak yang hendak dicari, yang boleh menjadi rentetan atau tatasusunan rentetan
  • $replacement: rentetan atau tatasusunan rentetan yang digunakan penggantian. Jika hujah ini ialah rentetan dan $pattern ialah tatasusunan, maka semua corak digantikan dengan rentetan ini. Jika $pattern dan $replacement adalah kedua-dua tatasusunan, setiap $pattern digantikan dengan elemen yang sepadan dalam $replacement. Jika terdapat kurang elemen dalam $replacement berbanding $pattern, $pattern tambahan digantikan dengan rentetan kosong.
  • $subject: Tatasusunan rentetan atau rentetan yang akan dicari dan digantikan Jika $subject ialah tatasusunan, carian dan penggantian akan dilakukan pada setiap elemen $subjek, dan nilai pulangan juga akan menjadi satu tatasusunan. .
  • $limit: Parameter pilihan, bilangan maksimum penggantian bagi setiap corak pada setiap $subjek. Lalai ialah -1 (tidak terhad).
  • $count: parameter pilihan, jika dinyatakan, akan diisi dengan bilangan penggantian yang lengkap.

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!

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