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
第十四节--命名空间
Nov 16 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
php MessagePack介绍
Oct 06 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 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与ASP
2006/10/09 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python实现简单http服务器
2018/04/12 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
就业自我评价
2014/02/04 职场文书
政治思想表现评语
2014/05/04 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
师德标兵事迹材料
2014/12/19 职场文书
委托函范文
2015/01/29 职场文书
我的长征观后感
2015/06/09 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers