云南网站建设创新企业 昆明多彩网络公司

在线qq:540105663

php截取字符(按字符数截取),GBK中文

来源:昆明网页设计 日期:2010-07-07 阅读: 发表评论

php带有内置的截取函数,但是仅在英文和数字环境下有效,截取中文和英文数字组合的时候就会出现乱码问题,本文是针对GBK中文的截取函数说明。


/**
 * strlen得到一个字符串的字节数,filesize得到的是一个文件的字数
 *
 * ---------------------------------------------------------------------
 * 仅针对gbk字符
 *
 * 用到的函数:
 * ord() 函数:返回字符串第一个字符的 ASCII 值
 * 提示:
 * gbk编码原理
 * 第一个字节ASCII码>129的,它与它之后的1个字节一起组成一个gbk字符,
 *第一个字节ASCII码<=129的,一个字节组成一个gbk字符
 */
function cutStr($str, $length = '') { // $length为字符个数,不是字节
 if ($length != '') { // 如果$length不为空
  $len = strlen($str); //得到字符长度
  $strOk = '';
  $i = 0; //字符长度
  $n = 0; //字符个数
  while ($i < $len && $n < $length) {
   $ascii = ord($str{$i}); //得到当前字节的ASCII码
   if ($ascii > 129) { // 大于129,是2个字节字符
    $strOk .= substr($str, $i, 2);
    $i += 2;
    $n++;
   } else { // 小于等于129,是1个字节字符
    $strOk .= substr($str, $i, 1);
    $i++;
    $n++;
   }
  }
 } else {
  $strOk = $str;
 }
 return $strOk;
}
// 示例
$text = file_get_contents('test.txt'); //截取的字符串
echo cutStr($text);

发表评论评论列表(有 条评论)

相关文章:
暂无相关文章
最热文章:
新手怎么制作网页? 阅读:7660
jcarousellite中文文档 阅读:6507
表单元素input、按钮、文字完美垂 阅读:6247
怎么使chrome(谷歌google 阅读:6145
phpMailer中文文档手册 阅读:4639