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元素加透明色的技巧【方法】

