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中函数内引用全局变量的方法
Oct 20 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
php 短链接算法收集与分析
Dec 30 PHP
php分页思路以及在ZF中的使用
May 30 PHP
PHP多线程类及用法实例
Dec 03 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 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程序员不应该忽略的3点
2015/10/09 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
使用Python实现windows下的抓包与解析
2018/01/15 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
办公室驾驶员岗位职责
2013/11/15 职场文书
会计专业自我评价
2014/02/12 职场文书
检讨书范文300字
2015/01/28 职场文书
大学学生个人总结
2015/02/15 职场文书
紧急迫降观后感
2015/06/15 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书