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 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
php木马webshell扫描器代码
Jan 25 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
php检测文件编码的方法示例
Apr 25 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
WordPress伪静态规则设置代码实例
Dec 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+mysql留言本源码
2009/11/11 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
Python中的闭包详细介绍和实例
2014/11/21 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
简单了解Django ContentType内置组件
2019/07/23 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
大学毕业生自我鉴定
2013/11/05 职场文书
高中体育教学反思
2014/01/24 职场文书
新年爱情寄语
2014/04/08 职场文书
房产授权委托书范本
2014/09/22 职场文书
警察群众路线整改措施
2014/09/26 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python