php判断字符串里有英文,PHP针对中英文混合字符串长度判断及截取方法示例
本文实例讲述了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:这里再为大家推荐几款在线字符统计工具供大家参考:
希望本文所述对大家PHP程序设计有所帮助。
php判断字符串里有英文,PHP针对中英文混合字符串长度判断及截取方法示例相关推荐
- C#实现 获取指定字节长度 中英文混合字符串 的方法
平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错.尤其是插入中英文混合字符串时,SQL Server中一般中文要占 ...
- 中英文混合字符串长度的获取
在项目中要处理中英文混合字符串的长度,中文按2个字符算,英文按1个字符算.以下是我处理的方法,不知道有没有更好的方法. private int GetGBLength(string strData) ...
- ASP如何计算中英文混合字符串长度和截取字符串
用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...
- Javascript中得到中英文混合字符串的长度
有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. var str = "坦克是tank的音译";var len = ...
- 计算中英文混合字符串长度
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//第一种方法NS ...
- php截取英语,php 截取中英文混合字符串的方法
php 截取中应为字符串,就不必再用substr或者mb_substr //截取想这样的字符串 a李三 利用ASCII /** * * 中英混合的字符串截取 * @param unknown_type ...
- PHP截取中英文混合字符串
<?php /*** 截取中英文混合字符串* @param $sourcestr 需要截取的字符串* @param $start 开始位置,字符位置,* @param $cutlength 结束 ...
- qt判断读入的字符串是否含有英文_459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000.示例 1:输入: "abab"输出: True解释: 可由 ...
- qt判断读入的字符串是否含有英文_重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000.示例 1:输入: "abab"输出: True解释: 可由 ...
最新文章
- msdn画圆弧函数_复变函数与积分变换 简明笔记(八):保形映射(共形映射)
- mysql架构设计书籍推荐_最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这...
- ubuntu php 源,Ubuntu18.04更换国内源
- Android\OPhone动画分析之翻转效果
- 改变世界的5大常数,学过数学的人,这一辈子都不会忘记!
- python手把手教程_【Python 1-7】Python手把手教程之——详解列表List
- gromacs 安装_GROMACS:粗粒化力场建立和模拟上线!
- 如何在SQLite中检查表是否存在?
- PowerDesigner实用技巧小结(4)
- AS技巧合集「常用技巧篇」
- thread/threading——Python多线程入门笔记
- (三)洞悉linux下的Netfilteriptables:内核中的rule,match和target
- Linux下使用源码编译方式安装zlib
- php 字库,矢量字库的剪裁_php
- yolo系列的head模块
- C++实现string的spilt功能-temp
- 机器学习-训练了一个高效快速识别身份证正面关键信息的模型
- uniapp uniCloud 云开发上传图片与查看图片
- 计时器计算小时、分钟、秒数
- Ditto 复制粘贴