> php教程 > php手册 > PHP는 UTF-8 문자열 기술을 올바르게 구문 분석합니다.

PHP는 UTF-8 문자열 기술을 올바르게 구문 분석합니다.

WBOY
풀어 주다: 2016-05-16 09:00:25
원래의
2062명이 탐색했습니다.

"PHP와 MYSQL 배우기 - 문자 인코딩(1부)"에서는 유니코드와 UTF-8 간의 변환 관계를 소개하고, 이 인코딩 규칙을 기반으로 UTF-8 인코딩 구문 분석 프로그램을 요약합니다. , PHP 구현은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

/*
프로그램 함수인 $str은 중국어와 영어가 혼합된 UTF-8 인코딩 문자열입니다.
UTF-8 인코딩 규칙에 따라 이 문자열을 올바르게 디코딩하고 표시합니다.
*/


$str = '오늘 너무 행복해서 KFC에 가서 콜라 치킨윙 먹기로 했어요!!!';

/*
$str은 차단됩니다 문자열
$len은 차단된 문자의 수입니다
*/
function utf8sub($str,$len) {
if($len <= 0) {
return '' ;
}

$offset = 0; // 상위 바이트 가로채기 시 오프셋
$chars = 0 // 가로채는 문자 수
$ res = '' ; // 가로챈 결과 문자열 저장

while($chars < $len){
// 문자열의 첫 번째 바이트를 먼저 가져옴
// 10진수로 변환
// 그런 다음 바이너리로 변환합니다
$high = ord(substr($str,$offset,1))

// echo '$high='.'< br />';

if($high == null ){ // 상위 비트가 null이면 끝까지 가져왔음을 증명하며 직접 중단합니다
break; >}
if( ($high>>2) === 0x3F){ // 상위 비트를 오른쪽으로 2비트 이동하여 바이너리 111111과 비교합니다. 같으면 6바이트를 가져옵니다
// 2바이트 가로채기
$count = 6;
}else if(($high>>3) === 0x1F){ // 상위 비트를 오른쪽으로 2비트 이동하고 비교합니다. 바이너리 11111을 사용합니다. 동일하면 5바이트를 가져옵니다.
// 3바이트를 가로채세요.
$count = 5
}else if(($high>>4) === 0xF) { // 상위 비트를 오른쪽으로 2비트 이동하고 이진수 1111과 비교합니다. 동일하면 4바이트를 가져옵니다.

// 4바이트를 가져옵니다.
$count = 4; 🎜>}else if(($high>>5) === 0x7){ // 상위 비트를 오른쪽으로 2비트 이동하고 이진수 111과 비교합니다. 동일하면 3바이트를 가져옵니다.

// 5바이트 ​​가로채기
$count = 3;
}else if(($high> >6) === 0x3){ // 상위 비트를 오른쪽으로 2비트 이동하고 비교합니다. 바이너리 11이면 2바이트를 취합니다.
// 6바이트를 가로채세요
$count = 2
}else if(($high>>7) === 0x0){ // 상위 비트를 오른쪽으로 2비트 이동하고 이진수 0과 비교합니다. 동일하면 1바이트를 가져옵니다.
$count = 1
}
// echo '$count='. $count.'
';

$res .= substr($str,$offset,$count) / / 문자를 꺼내서 $res 문자열에 연결합니다
$chars += 1; // 가로채는 문자 수 + 1
$offset += $count; // 높은 오프셋을 가로채서 $count 바이트만큼 뒤로 이동합니다.
return $res; 🎜>}

echo utf8sub($str,100);

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿