이 기사의 예는 PHP에서 중국어 문자열을 가로채는 방법을 요약한 것으로, 이는 매우 실용적인 기술입니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법 분석은 다음과 같습니다.
PHP 함수 substr을 사용하여 한자를 가로채면 문자가 깨질 수 있습니다. 주된 이유는 substr이 한자를 강제로 반으로 "볼" 수 있기 때문입니다.
해결 방법은 다음과 같습니다.
1. 문자 왜곡을 방지하려면 mbstring 확장 라이브러리의 mb_substr 차단을 사용하세요.
2. 차단 기능을 직접 작성하지만 mbstring 확장 라이브러리를 사용하는 것만큼 효율성이 높지 않습니다.
3. 단지 가로채는 문자열을 출력하는 것이라면 substr($str, 0, 30).chr(0)과 같이 구현할 수 있습니다.
substr() 함수는 텍스트를 분할할 수 있지만 분할할 텍스트에 중국어 문자가 포함되어 있는 경우 종종 문제가 발생합니다. 이 경우 mb_substr()/mb_strcut 함수를 사용할 수 있습니다. mb_strcut은 substr()과 유사합니다. mb_substr()/mb_strcut 끝에 매개변수를 하나 더 추가하면 문자열 인코딩을 설정할 수 있지만 대부분의 서버는 php_mbstring.dll을 열지 않으므로 PHP에서 php_mbstring.dll을 열어야 합니다. .ini.
2가지 예를 들어보세요:
① mb_substr 예시
<?php echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); //输出:这样一来我的字 ?>
② mb_strcut 예시
<?php echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); //输出:这样一 ?>
위의 예에서 볼 수 있듯이 mb_substr은 문자를 단어로 분할하고 mb_strcut은 문자를 바이트로 분할하지만 둘 다 문자의 절반을 생성하지 않습니다.
깨진 문자 없이 중국어 텍스트 문자열을 가로채는 PHP 방법:
<?php //此函数完成带汉字的字符串取串 function substr_CN($str,$mylen){ $len=strlen($str); $content=''; $count=0; for($i=0;$i<$len;$i++){ if(ord(substr($str,$i,1))>127){ $content.=substr($str,$i,2); $i++; }else{ $content.=substr($str,$i,1); } if(++$count==$mylen){ break; } } echo $content; } $str="34中华人民共和国56"; substr_CN($str,3);//输出34中 ?>
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.