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]));
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!