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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
自定义php类(查找/修改)xml文档
Mar 26 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
php生成无限栏目树
Mar 16 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php下获取http状态的实现代码
2014/05/09 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
javascript String 对象
2008/04/25 Javascript
番茄的表单验证类代码修改版
2008/07/18 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
jQuery参数列表集合
2011/04/06 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
Angular实现form自动布局
2016/01/28 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
简单谈谈Python中的闭包
2016/11/30 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
用Python逐行分析文件方法
2019/01/28 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
《孔子游春》教学反思
2014/02/25 职场文书
促销活动总结模板
2014/07/01 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB