> 백엔드 개발 > PHP 튜토리얼 > .chr(0)을 사용하여 중국어 문자를 가로채고 PHP에서 문자 깨짐을 방지하는 방법

.chr(0)을 사용하여 중국어 문자를 가로채고 PHP에서 문자 깨짐을 방지하는 방법

PHP中文网
풀어 주다: 2016-07-25 08:57:09
원래의
1383명이 탐색했습니다.

PHP 코드

<?php    
$len = 19;    
$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";    
echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");    
?>
로그인 후 복사

chr(0)은 null이 아닙니다

null은 아무것도 아니며 chr(0)의 값은 0입니다. 16진수로 표현하면 0x00, 2진수로 표현하면 00000000

chr(0)은 아무것도 표시하지 않지만 문자입니다.

한자가 잘리면 인코딩 규칙에 따라 항상 뒤에 있는 다른 문자를 한자로 모아서 해석해야 합니다. 이것이 왜곡된 문자가 나타나는 이유입니다. 0x81~0xff 및 0x00 값의 조합은 항상 "비어 있음"으로 표시됩니다

이 기능에 따르면 substr 결과 뒤에 chr(0)을 추가하면 문자 깨짐을 방지할 수 있습니다

참고:

첫 번째 바이트와 두 번째 바이트를 인코딩하세요.

gb2312 0xa1-0xf7 0xa1-0xfe

gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e

big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e

다른 방법:

PHP 코드

function csubstr($text, $limit) {    
    $s = &#39;;    
    for($i=0;$i< $limit-3;$i++) {    
        $s .= ord($text[$i])>127 ? $text[$i].$text[++$i] : $text[$i];    
    }    
    return $s;    
}
로그인 후 복사

위 내용은 gb2312에만 적용됩니다. 인코딩, UTF-8인 경우 4행을

PHP 코드

$s .= ord($text[$i] )>로 변경해야 합니다. ;127 ? $text[$i].$text[ $i].$text[ $i] : $text[$i];

UTF-8의 한자는 3바이트입니다.


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