Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mendapatkan Kiraan Aksara Berbilangbait dengan Betul Sebelum `preg_match()`?

Bagaimana untuk Mendapatkan Kiraan Aksara Berbilangbait dengan Betul Sebelum `preg_match()`?

Susan Sarandon
Lepaskan: 2024-12-08 09:11:15
asal
740 orang telah melayarinya

How to Correctly Get Multibyte Character Count Before a `preg_match()`?

Dapatkan Kiraan Aksara Berbilangbait sebelum Padanan dengan preg_match() (PREG_OFFSET_CAPTURE Parameter Mengira Bait Tidak Bermanfaat)

Dalam rentetan yang dikodkan UTF-8, preg_match () boleh melaporkan offset aksara yang salah dalam padanan yang ditangkap apabila menggunakan parameter PREG_OFFSET_CAPTURE. Sebabnya ialah offset yang ditangkap dikira dalam bait, walaupun rentetan subjek ditafsirkan sebagai UTF-8 dengan pengubah suai "u".

Penyelesaian:

Untuk mendapatkan offset aksara yang betul dalam padanan yang ditangkap UTF-8, gunakan mb_strlen untuk mengira kiraan aksara berdasarkan UTF-8 bait offset:

$str = "\xC2\xA1Hola!";
preg_match('/H/u', $str, $a_matches, PREG_OFFSET_CAPTURE);
echo mb_strlen(substr($str, 0, $a_matches[0][1]));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kiraan Aksara Berbilangbait dengan Betul Sebelum `preg_match()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan