>백엔드 개발 >PHP 튜토리얼 >PHP에서 substr()에 의해 가로채는 한자가 왜곡되는 문제에 대한 해결 방법에 대해

PHP에서 substr()에 의해 가로채는 한자가 왜곡되는 문제에 대한 해결 방법에 대해

墨辰丷
墨辰丷원래의
2018-06-01 17:38:361713검색

이 기사에서는 주로 PHP substr() 함수를 소개합니다. 다음은 중국어 문자열을 가로챌 때 왜곡되는 문제를 설명하는 코드 예제입니다. 필요한 친구는 이를 참조할 수 있습니다.

PHP에서 문자열을 가로채기 위해 substr()을 사용하려면 다음과 같습니다. 모두 영어로 되어 있으면 문제 없습니다. 중국어나 영어가 포함되어 있으면 비극이겠지만, 걱정하지 마세요. 다른 방법을 사용하여 문제를 해결할 수 있습니다.

PHP가 중국어 문자열을 가로챌 때 잘못된 문자가 나타납니다. 이전에 메타 정보 자동 생성에 대한 기사를 작성한 적이 있습니다. 그 기사는 설명 방법으로 기사의 처음 몇 단어를 가로채는 것에 관한 것입니다. , 그러나 IE6에서 CSS를 로드할 수 없는 문제가 발생했습니다. 여기에 보충 내용이 있습니다.

먼저 IE6에서 CSS를 로드하지 못하는 이유는 파일이 왜곡되어 CSS를 로드하는 후속 링크가 IE6에서 올바르게 구문 분석되지 않기 때문입니다. 그래서 저는 CSS가 없는 순수한 HTML 페이지를 보았습니다. 문제를 명확히 하고 나면 남은 문제는 쉽게 해결할 수 있는데, 이는 문자 깨짐을 방지하는 것입니다. Wange에서 제공하는 함수에 문자 깨짐이 있으므로 이 깨짐 코드 문제를 해결하기 위한 새로운 PHP 함수를 찾았습니다.

substr() 함수는 텍스트를 분할할 수 있지만 분할할 텍스트에 중국어 문자가 포함되어 있으면 종종 문제가 발생합니다.

mb_substr() 이 함수의 사용법은 문자열 인코딩을 설정하기 위해 끝에 매개변수가 하나 더 추가된다는 점을 제외하면 substr()과 유사합니다.

Wange 방식을 개선한 이유를 아셔야 합니다~~

다음은 좀 더 발전된 처리 방법을 소개합니다

예제 1

코드는 다음과 같습니다

function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 
 $tmpstr = "";
 $strlen = $len;
 for($i = 0; $i < $strlen; $i++) {
 if(ord(substr($str, $i, 1)) > 0xa0) {
 $tmpstr .= substr($str, $i, 2);
 $i++;
 } else
 $tmpstr .= substr($str, $i, 1);
 }
 return $tmpstr;
}

예시 2

문자열은 UTF-8로 인코딩되었으며 한자 하나가 3바이트를 차지합니다.

public static function Chinesesubstr($str, $start, $len) { // $str은 해당 문자를 나타냅니다. String, $start는 문자열의 시작 위치, $len은 문자열의 길이를 나타냅니다

$strlen = $start + $len; // $strlen을 사용하여 전체 길이를 저장합니다. 즉, 문자열의 시작 위치부터 문자열의 전체 길이까지

코드는 다음과 같습니다

 for($i = $start; $i < $strlen;) {
 if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数
值大于0xa0,则表示汉字
 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等
于一个汉字
 $i=$i+3; // 变量自加3
 } else{
 $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给
变量$tmpstr
 $i++;
 }
 }
 return $tmpstr; // 返回字符串
 }

요약: 위 내용이 이 글의 전체 내용이므로, 모든 사람의 학습에 도움이 될 것입니다.

관련 권장 사항:

php oracle 저장 프로시저 그래픽 설명 방문

php현재 URL 주소 획득 구현

바이너리 스트림을 받아 그림으로 변환하는 PHP 구현

위 내용은 PHP에서 substr()에 의해 가로채는 한자가 왜곡되는 문제에 대한 해결 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.