應該注意的是,$offset 是**字元偏移量**,而不是**位元組偏移量**。這表示大多數其他處理長度和偏移量的 PHP 字串函式(strlen、strpos、preg_match 與 PREG_OFFSET_CAPTURE 等)如果用於多位元組字串(如 UTF-8 字串),則會使用並傳回不適用於此方法的值。
位元組偏移量可以使用 mb_strlen 轉換為字元偏移量
<?php
function char_offset($string, $byte_offset, $encoding = null)
{
$substr = substr($string, 0, $byte_offset);
return mb_strlen($substr, $encoding ?: mb_internal_encoding());
}
?>