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使用PDO操作MySQL数据库实例
Dec 30 PHP
php递归实现无限分类的方法
Jul 28 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
php中数组最简单的使用方法
Dec 27 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
织梦模板标记简介
2007/03/11 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
浅析Python3爬虫登录模拟
2018/02/07 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
策划主管的工作职责
2013/11/24 职场文书
测试工程师岗位职责
2013/11/28 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
迎七一演讲稿
2014/09/12 职场文书
助学贷款贫困证明
2014/09/23 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
企业财务管理制度范本
2015/08/04 职场文书
寒假致家长的一封信
2015/10/10 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
python中取整数的几种方法
2021/11/07 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
Java使用HttpClient实现文件下载
2022/08/14 Java/Android