>백엔드 개발 >PHP 문제 >PHP에서 첫 번째 중국어 왜곡 코드를 가로채는 방법

PHP에서 첫 번째 중국어 왜곡 코드를 가로채는 방법

藏色散人
藏色散人원래의
2021-12-02 10:40:331487검색

첫 번째 중국어 왜곡 코드를 가로채는 PHP용 솔루션: 1. PHP 샘플 파일을 만듭니다. 2. "charset=utf-8" 인코딩을 설정합니다. 3. "function str($str='',$len=0)을 전달합니다. ) {...}"를 가로챌 수 있습니다.

PHP에서 첫 번째 중국어 왜곡 코드를 가로채는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.4, DELL G3 컴퓨터

PHP에서 최초의 중국어 왜곡 코드를 가로채는 방법은 무엇입니까?

php는 한자 가로채기와 문자 깨짐 문제를 해결합니다

  문자열에서 한자 가로채기 문제에 대해 인터넷에 소개도 많고 기능도 많은데, 기능을 살펴보니 인터넷을 하다보니 항상 좀 어색한 느낌이 들어서

 그래서 제가 직접 작성했습니다. 문자열 가로채기 시 한자가 깨져서 나오는 것을 방지하는 기능입니다.

 구현 원리는 비교적 간단합니다. 주로 ASCII 인코딩과 중국어 인코딩의 불일치 이진 범위를 사용하여 구분한 다음, 문자열을 가로채기 위해 substr() 함수를 통해 구현합니다.

 내가 작성한 코드는 다음과 같습니다. 참고: 다른 인코딩의 경우 독자가 수동으로 다른 인코딩을 지원하도록 기능을 변경할 수 있습니다.

<?php
header(&#39;content-type:text/html;charset=utf-8;&#39;);
$str = &#39;利要a-符e:r ttnx节小-子s区。vh;peh。例t来个oe体字n代gb节看t通c eu是的soS至什tna过码 t;Ie看C实e/,字le A来具8y么a)n=于ndg是r于 0tmt现码 e0ssf8单下s(uo别e的以ieh过aatx和t接要u几这看 nsw Ihrr用字 mgtts上就eg cAei的nwo码e跳h,t编&#39;;
/*
*在某篇文章中截取一段字符串,多余的用省略号...表示,并且防止中文乱码
*$param1 string要截取的字符串 $str  注意:这里是utf-8编码
*$param2 int截取字符串的长度 $len  
*返回值 成功返回所要截取的字符串,失败为空
*/
function str($str=&#39;&#39;,$len=0){
    //检查参数
    if(!is_string($str) || !is_int($len)){
        return &#39;&#39;;
    }
    $length = strlen($str);
    if($length <= 0 ){
        return &#39;&#39;;
    }
    if($len>=$length){
        return $str;
    }
    //初始化,统计字符串的个数,
    $count = 0;
    for($i=0;$i<$length;$i++){
        //达到个数跳出循环,$i即为要截取的长度
        if($count == $len){
            break;
        }
        $count++;
        //ord函数是获取字符串的ASCII编码,大于等于十六进制0x80的字符串即为中文字符串
        if(ord($str{$i}) >= 0x80){
            $i +=2;//中文编码的字符串的长度再加2
        }
    }
    //如果要截取的个数超过了字符串的总个数,那么我们返回全部字符串,不带省略号
    if($len > $count){
        return $str;
    }else{
        return substr($str,0,$i).&#39;...&#39;;
    }
}

위 코드의 구현은 0x80 이하의 1바이트 문자의 ASCII 코드를 사용하는 것입니다. 건너뛸 바이트 수는 특정 인코딩에 따라 다릅니다.

 틀린 부분이 있으면 지적해주세요.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 첫 번째 중국어 왜곡 코드를 가로채는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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