php截取字符(按字符數(shù)截取),GBK中文
來源:昆明網(wǎng)頁設(shè)計(jì) 日期:2010-07-07 閱讀: 發(fā)表評論
/**
* strlen得到一個(gè)字符串的字節(jié)數(shù),filesize得到的是一個(gè)文件的字?jǐn)?shù)
*
* ---------------------------------------------------------------------
* 僅針對gbk字符
*
* 用到的函數(shù):
* ord() 函數(shù):返回字符串第一個(gè)字符的 ASCII 值
* 提示:
* gbk編碼原理
* 第一個(gè)字節(jié)ASCII碼>129的,它與它之后的1個(gè)字節(jié)一起組成一個(gè)gbk字符,
*第一個(gè)字節(jié)ASCII碼<=129的,一個(gè)字節(jié)組成一個(gè)gbk字符
*/
function cutStr($str, $length = '') { // $length為字符個(gè)數(shù),不是字節(jié)
if ($length != '') { // 如果$length不為空
$len = strlen($str); //得到字符長度
$strOk = '';
$i = 0; //字符長度
$n = 0; //字符個(gè)數(shù)
while ($i < $len && $n < $length) {
$ascii = ord($str{$i}); //得到當(dāng)前字節(jié)的ASCII碼
if ($ascii > 129) { // 大于129,是2個(gè)字節(jié)字符
$strOk .= substr($str, $i, 2);
$i += 2;
$n++;
} else { // 小于等于129,是1個(gè)字節(jié)字符
$strOk .= substr($str, $i, 1);
$i++;
$n++;
}
}
} else {
$strOk = $str;
}
return $strOk;
}
// 示例
$text = file_get_contents('test.txt'); //截取的字符串
echo cutStr($text);
發(fā)表評論評論列表(有 條評論)