加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 截取中英文混合字符串的技巧

发布时间:2022-07-14 12:17:13 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php 截取中英文混合字符串,需要的朋友可以参考下,php 截取中应为字符串,就不必再用substr或者mb_substr。 //截取想这样的字符串 a李三 利用ASCII /** * * 中英混合的字符串截取 * @param unknown_type $sourcestr * @param unknown_type
  这篇文章主要介绍了php 截取中英文混合字符串,需要的朋友可以参考下,php 截取中应为字符串,就不必再用substr或者mb_substr。
 
  //截取想这样的字符串
 
  a李三
 
  利用ASCII
 
  /**
   *  
   * 中英混合的字符串截取
   * @param unknown_type $sourcestr
   * @param unknown_type $cutlength
   */
  function assoc_substr($sourcestr, $cutlength) {
     $returnstr = '';
     $i = 0;
     $n = 0;
     $str_length = strlen ( $sourcestr ); //字符串的字节数  
     while ( ($n < $cutlength) and ($i <= $str_length) ) {
      $temp_str = substr ( $sourcestr, $i, 1 );
      $ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii码  
      if ($ascnum >= 224) {//如果ASCII位高与224,
         $returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根据UTF-8编码规范,将3个连续的字符计为单个字符   
         $i = $i + 3; //实际Byte计为3
         $n ++; //字串长度计1
      } elseif ($ascnum >= 192){ //如果ASCII位高与192,
         $returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根据UTF-8编码规范,将2个连续的字符计为单个字符  
         $i = $i + 2; //实际Byte计为2
         $n ++; //字串长度计1
      } elseif ($ascnum >= 65 && $ascnum <= 90) {//如果是大写字母,
       $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
       $i = $i + 1; //实际的Byte数仍计1个
       $n ++; //但考虑整体美观,大写字母计成一个高位字符
      }elseif ($ascnum >= 97 && $ascnum <= 122) {
        $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
        $i = $i + 1; //实际的Byte数仍计1个
        $n ++; //但考虑整体美观,大写字母计成一个高位字符
      } else {//其他情况下,半角标点符号,
       $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
       $i = $i + 1;  
       $n = $n + 0.5;  
      }
     }
     return $returnstr;
  }

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读