preg_match()를 사용하여 일치 전 멀티바이트 문자 수 가져오기(PREG_OFFSET_CAPTURE 매개변수는 바이트 계산에 도움이 되지 않음)
UTF-8로 인코딩된 문자열에서 preg_match ()는 PREG_OFFSET_CAPTURE를 사용할 때 캡처된 일치 내에서 잘못된 문자 오프셋을 보고할 수 있습니다. 매개변수. 그 이유는 제목 문자열이 "u" 수정자를 사용하여 UTF-8로 해석되는 경우에도 캡처된 오프셋이 바이트 단위로 계산되기 때문입니다.
해결책:
UTF-8로 캡처된 일치 항목 내에서 올바른 문자 오프셋을 얻으려면 mb_strlen을 사용하여 UTF-8 바이트를 기준으로 문자 수를 계산하세요. 오프셋:
$str = "\xC2\xA1Hola!"; preg_match('/H/u', $str, $a_matches, PREG_OFFSET_CAPTURE); echo mb_strlen(substr($str, 0, $a_matches[0][1]));
위 내용은 `preg_match()` 이전의 멀티바이트 문자 수를 올바르게 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!