PHP各種編碼的漢字字串截取_PHP教程

來源:互聯網
上載者:User
雖然PHP有現成的截取字串函數substr(),但是這個函數不能對漢字字串進行截取,要實現這種效果還需要我們自己去編寫相應的函數。漢字有多種編碼,比如GB2312,UTF-8等,漢字字串的截取需要區分這種漢字編碼,下面是給出的幾個解決方案。

截取GB2312中文字串

 0xa0) {            $tmpstr .= substr($str, $i, 2);            $i++;        } else            $tmpstr .= substr($str, $i, 1);    }    return $tmpstr;}?>

截取utf8編碼的多位元組字串

 

UTF-8、GB2312都支援的漢字截取函數

 $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";        return join('', array_slice($t_string[0], $start, $sublen));    }    else    {        $start = $start*2;        $sublen = $sublen*2;        $strlen = strlen($string);        $tmpstr = '';        for($i=0; $i<$strlen; $i++)        {            if($i>=$start && $i<($start+$sublen))            {                if(ord(substr($string, $i, 1))>129)                {                    $tmpstr.= substr($string, $i, 2);                }                else                {                    $tmpstr.= substr($string, $i, 1);                }            }            if(ord(substr($string, $i, 1))>129) $i++;        }        if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";        return $tmpstr;    }}$str = "abcd需要截取的字串";echo cut_str($str, 8, 0, 'gb2312');?> 

BugFree 的字元截取函數

* @param string $String the string to cut.* @param int     $Length the length of returned string.* @param booble $Append whether append "...": false|true* @return string           the cutted string.*/function sysSubStr($String,$Length,$Append = false){    if (strlen($String) <= $Length )    {        return $String;    }    else    {        $I = 0;        while ($I < $Length)        {            $StringTMP = substr($String,$I,1);            if ( ord($StringTMP) >=224 )            {                $StringTMP = substr($String,$I,3);                $I = $I + 3;            }            elseif( ord($StringTMP) >=192 )            {                $StringTMP = substr($String,$I,2);                $I = $I + 2;            }            else            {                $I = $I + 1;            }            $StringLast[] = $StringTMP;        }        $StringLast = implode("",$StringLast);        if($Append)        {            $StringLast .= "...";        }        return $StringLast;    }}$String = "www.bkjia.com";$Length = "18";$Append = false;echo sysSubStr($String,$Length,$Append);?>

http://www.bkjia.com/PHPjc/752427.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752427.htmlTechArticle雖然PHP有現成的截取字串函數substr(),但是這個函數不能對漢字字串進行截取,要實現這種效果還需要我們自己去編寫相應的函數。漢...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.