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 09 PHP
PHP数据缓存技术
Feb 14 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
php遍历树的常用方法汇总
Jun 18 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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开发中的中文编码问题
2013/08/08 PHP
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python创建数字列表的示例
2019/11/28 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Python如何输出警告信息
2020/07/30 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
总经理秘书的岗位职责
2013/12/27 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
客房部经理岗位职责
2015/02/02 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书