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来处理多个提交任务
May 08 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
php防注入及开发安全详细解析
Aug 09 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 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使用ActiveMQ实例
2018/02/05 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
求职自荐书范文
2013/12/04 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
小学清明节活动方案
2014/03/08 职场文书
精彩广告词大全
2014/03/19 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Redis分布式锁的7种实现
2022/04/01 Redis
JavaScript获取URL参数的方法分享
2022/04/07 Javascript