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 相关文章推荐
PHP5中的时间相差8小时的解决办法
Mar 28 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
PHP empty函数报错解决办法
Mar 06 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php导出生成word的方法
Dec 25 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
js中cookie的使用详细分析
2008/05/28 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
python实现Windows电脑定时关机
2018/06/20 Python
简单了解python变量的作用域
2019/07/30 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python字典底层实现原理详解
2019/12/18 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
普通简短的个人自我评价
2014/02/15 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
Java实现给Word文件添加文字水印
2022/02/15 Java/Android