>  기사  >  백엔드 개발  >  php substr 중국어 왜곡 코드에 대한 솔루션

php substr 중국어 왜곡 코드에 대한 솔루션

高洛峰
高洛峰원래의
2016-11-29 16:16:221521검색

중국어 문자열을 가로채기 위해 substr을 직접 사용하면 중국어 문자가 절반으로 나누어지기 때문에 확실히 문자가 깨집니다. 왜 이런 일이 발생하는 걸까요? 이제 기계 내부 인코딩 문제 때문일까요?

1 솔루션을 살펴보세요. mbstring 확장 라이브러리의 mb_substr 차단을 사용하면 잘못된 문자가 나타나지 않습니다.

2. 차단 기능을 직접 작성하지만 mbstring 확장 라이브러리를 사용하는 것만큼 효율성이 높지 않습니다.

3. 단지 가로채는 문자열을 출력하는 것이라면 다음과 같이 구현할 수 있습니다: substr($str, 0, 30).chr(0).

PHP 예시 코드는 다음과 같습니다.

* 한자의 잘못된 가로채기를 방지할 수 있습니다

* 매개변수 $str은 문자열, $start는 시작 문자, $len은 끝 문자

* 가로채는 문자를 반환합니다.

*/

function msubstr($str, $start, $len) {

$tmpstr = "";//Open 소스 코드 phpfensi.com

$ strlen = $start + $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, PHP는 잘못된 문자 없이 중국어 문자열을 가로채는 방법을 구현합니다.

function gbsubstr($string, $start, $length) {

if(strlen($string)>$length ){

$str=null

$len=$start+$length; ($i=$start;$i<$len;$i++) {

if(ord(substr($string,$i,1))>0xa0){

$ str.=substr($string,$i,2);

$i++;

}else{

$str.=substr($string,$i, 1)

}

}

return $str.'...';

}else{

return $ 문자열

}

}

?>

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