PHP针对中英文混合字符串长度判断及截取方法示例

发布时间 - 2026-01-11 00:28:01    点击率:

本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法。分享给大家供大家参考,具体如下:

/**
 * 
 * 中英混合字符串长度判断 
 * @param unknown_type $str
 * @param unknown_type $charset
 */
function strLength($str, $charset = 'utf-8') {
  if ($charset == 'utf-8')
    $str = iconv ( 'utf-8', 'gb2312', $str );
  $num = strlen ( $str );
  $cnNum = 0;
  for($i = 0; $i < $num; $i ++) {
    if (ord ( substr ( $str, $i + 1, 1 ) ) > 127) {
      $cnNum ++;
      $i ++;
    }
  }
  $enNum = $num - ($cnNum * 2);
  $number = ($enNum / 2) + $cnNum;
  return ceil ( $number );
}
/**
 * 
 * 中英混合的字符串截取
 * @param unknown_type $sourcestr
 * @param unknown_type $cutlength
 */
function cut_str($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 ++; //但考虑整体美观,大写字母计成一个高位字符
    } else //其他情况下,包括小写字母和半角标点符号,
    {
      $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
      $i = $i + 1; //实际的Byte数计1个
      $n = $n + 0.5; //小写字母和半角标点等与半个高位字符宽...
    }
  }
  if ($str_length > $cutlength) {
    $returnstr = $returnstr . "..."; //超过长度时在尾处加上省略号
  }
  return $returnstr;
}

PS:这里再为大家推荐几款在线字符统计工具供大家参考:

在线字数统计工具:
http://tools./code/zishutongji

在线字符统计与编辑工具:
http://tools./code/char_tongji

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。


# PHP  # 中英文  # 混合  # 字符串  # 长度判断  # 截取  # PHP中字符串长度的截取用法示例  # ThinkPHP 模板substr的截取字符串函数详解  # 详解PHP用substr函数截取字符串中的某部分  # thinkPHP内置字符串截取函数用法详解  # php中文字符串截取多种方法汇总  # PHP入门教程之字符串处理技巧总结(转换  # 过滤  # 解析  # 查找  # 替换等)  # PHP指定截取字符串中的中英文或数字字符的实例分享  # PHP按符号截取字符串的指定部分的实现方法  # 半角  # 程序设计  # 中英  # 字串  # 操作技巧  # 相关内容  # 感兴趣  # 给大家  # 半个  # 更多关于  # 所述  # 几款  # 面向对象  # 再为  # 编辑工具  # 运算符  # 情况下  # 编程技巧  # 讲述了  # lt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 中山网站推广排名,中山信息港登录入口?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何实现建站之星域名转发设置?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何用景安虚拟主机手机版绑定域名建站?  奇安信“盘古石”团队突破 iOS 26.1 提权  网站页面设计需要考虑到这些问题  b2c电商网站制作流程,b2c水平综合的电商平台?  EditPlus中的正则表达式 实战(2)  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  详解MySQL数据库的安装与密码配置  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何在阿里云域名上完成建站全流程?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何在云主机快速搭建网站站点?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  网站制作壁纸教程视频,电脑壁纸网站?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何打造高效商业网站?建站目的决定转化率  js实现点击每个li节点,都弹出其文本值及修改  如何生成腾讯云建站专用兑换码?  Laravel中的withCount方法怎么高效统计关联模型数量  微信小程序 canvas开发实例及注意事项  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  javascript日期怎么处理_如何格式化输出  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  LinuxCD持续部署教程_自动发布与回滚机制  C++时间戳转换成日期时间的步骤和示例代码  html5的keygen标签为什么废弃_替代方案说明【解答】  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  网站建设保证美观性,需要考虑的几点问题!  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何挑选最适合建站的高性能VPS主机?  微信小程序 wx.uploadFile无法上传解决办法  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】