php 截取中英文混合字符串的方法


Posted in PHP onMay 31, 2018

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;
}

总结

以上所述是小编给大家介绍的php 截取中英文混合字符串的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
投票管理程序
Oct 09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP封装curl的调用接口及常用函数详解
May 31 #PHP
PHP通过curl获取接口URL的数据方法
May 31 #PHP
php获得刚插入数据的id 的几种方法总结
May 31 #PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 #PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 #PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 #PHP
php curl获取到json对象并转成数组array的方法
May 31 #PHP
You might like
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
发现的以前不知道的函数
2006/09/19 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python中wheel的用法整理
2020/06/15 Python
详解Django中异步任务之django-celery
2020/11/05 Python
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
车间组长岗位职责
2013/12/20 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
医院工作检讨书范文
2014/02/10 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
初中物理教学反思
2016/02/19 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
导游词之吉林花园山
2019/10/17 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
Fluentd搭建日志收集服务
2022/09/23 Servers