云南網站建設創(chuàng)新企業(yè) 昆明多彩網絡公司

      |網頁對話|電話:0871-63215311

      php截取字符(按字符數(shù)截取),GBK中文

      來源:昆明網頁設計 日期:2010-07-07 閱讀: 發(fā)表評論

      php帶有內置的截取函數(shù),但是僅在英文和數(shù)字環(huán)境下有效,截取中文和英文數(shù)字組合的時候就會出現(xiàn)亂碼問題,本文是針對GBK中文的截取函數(shù)說明。


      /**
       * strlen得到一個字符串的字節(jié)數(shù),filesize得到的是一個文件的字數(shù)
       *
       * ---------------------------------------------------------------------
       * 僅針對gbk字符
       *
       * 用到的函數(shù):
       * ord() 函數(shù):返回字符串第一個字符的 ASCII 值
       * 提示:
       * gbk編碼原理
       * 第一個字節(jié)ASCII碼>129的,它與它之后的1個字節(jié)一起組成一個gbk字符,
       *第一個字節(jié)ASCII碼<=129的,一個字節(jié)組成一個gbk字符
       */
      function cutStr($str, $length = '') { // $length為字符個數(shù),不是字節(jié)
       if ($length != '') { // 如果$length不為空
        $len = strlen($str); //得到字符長度
        $strOk = '';
        $i = 0; //字符長度
        $n = 0; //字符個數(shù)
        while ($i < $len && $n < $length) {
         $ascii = ord($str{$i}); //得到當前字節(jié)的ASCII碼
         if ($ascii > 129) { // 大于129,是2個字節(jié)字符
          $strOk .= substr($str, $i, 2);
          $i += 2;
          $n++;
         } else { // 小于等于129,是1個字節(jié)字符
          $strOk .= substr($str, $i, 1);
          $i++;
          $n++;
         }
        }
       } else {
        $strOk = $str;
       }
       return $strOk;
      }
      // 示例
      $text = file_get_contents('test.txt'); //截取的字符串
      echo cutStr($text);

      發(fā)表評論評論列表(有 條評論)

      相關文章:
      暫無相關文章
      最熱文章:
      新手怎么制作網頁? 閱讀:7660
      jcarousellite中文文檔 閱讀:6507
      表單元素input、按鈕、文字完美垂 閱讀:6247
      怎么使chrome(谷歌google 閱讀:6145
      phpMailer中文文檔手冊 閱讀:4639
      網頁對話 0871-63215311
      日韩精品无码一区二区三区,亚州AV高清无码在线,精品一区 二区三区免费毛片,国产极品99热在线播放69