[提問交流]分享一個擷取字串的函式

發表於2019-05-11
//擷取字串
function getShort($str, $length = 40, $ext = '') {
    $str    =   htmlspecialchars($str);
    $str    =   strip_tags($str);
    $str    =   htmlspecialchars_decode($str);
    $strlenth   =   0;
    $out        =   '';
    preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/", $str, $match);
    foreach($match[0] as $v){
        preg_match("/[\xe0-\xef][\x80-\xbf]{2}/",$v, $matchs);
        if(!empty($matchs[0])){
            $strlenth   +=  1;
        }elseif(is_numeric($v)){
            //$strlenth +=  0.545;  // 字元畫素寬度比例 漢字為1
            $strlenth   +=  0.5;    // 字元位元組長度比例 漢字為1
        }else{
            //$strlenth +=  0.475;  // 字元畫素寬度比例 漢字為1
            $strlenth   +=  0.5;    // 字元位元組長度比例 漢字為1
        }

        if ($strlenth > $length) {
            $output .= $ext;
            break;
        }

        $output .=  $v;
    }
    return $output;
}
回覆

相關文章