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分页函数
Jul 08 PHP
cache_lite试用
Feb 14 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php 启动报错如何解决
Jan 17 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
PHP实现简单汉字验证码
Jul 28 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP计算近1年的所有月份
Mar 13 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
PHP解决高并发问题
Apr 01 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 选项及相关信息函数库
2006/12/04 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
简单上手Python中装饰器的使用
2015/07/12 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python的faker库用法
2019/11/28 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python中format函数如何使用
2020/06/22 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python3排序的实例方法
2020/10/20 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
RealTek面试题
2016/06/28 面试题
求职简历自荐信范文
2013/10/21 职场文书
初中科学教学反思
2014/01/21 职场文书
单位成立周年感言
2014/01/26 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
法人代表委托书
2014/04/04 职场文书
海上钢琴师观后感
2015/06/03 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技