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 相关文章推荐
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
php递归实现无限分类的方法
Jul 28 PHP
eclipse php wamp配置教程
Jun 30 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
PHP dirname功能及原理实例解析
Oct 28 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读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python之array赋值技巧分享
2019/11/28 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
解决python运行启动报错问题
2020/06/01 Python
python判断是空的实例分享
2020/07/06 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
工商技校毕业生自荐信
2013/11/15 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
5.12护士节活动总结
2015/02/10 职场文书
共青团员自我评价
2015/03/10 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS