PHP中英混合字符串截取函数代码


Posted in PHP onJuly 17, 2011
function get_word($string, $length, $dot = '..',$charset='gbk') { 
if(strlen($string) <= $length) { 
return $string; 
} 
$string = str_replace(array(' ',' ', '&', '"', '<', '>'), array('','','&', '"', '<', '>'), $string); 
$strcut = ''; 
if(strtolower($charset) == 'utf-8') { 
$n = $tn = $noc = 0; 
while($n < strlen($string)) { 
$t = ord($string[$n]); 
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { 
$tn = 1; $n++; $noc++; 
} elseif(194 <= $t && $t <= 223) { 
$tn = 2; $n += 2; $noc += 2; 
} elseif(224 <= $t && $t < 239) { 
$tn = 3; $n += 3; $noc += 2; 
} elseif(240 <= $t && $t <= 247) { 
$tn = 4; $n += 4; $noc += 2; 
} elseif(248 <= $t && $t <= 251) { 
$tn = 5; $n += 5; $noc += 2; 
} elseif($t == 252 || $t == 253) { 
$tn = 6; $n += 6; $noc += 2; 
} else { 
$n++; 
} 
if($noc >= $length) { 
break; 
} 
} 
if($noc > $length) { 
$n -= $tn; 
} 
$strcut = substr($string, 0, $n); 
} else { 
for($i = 0; $i < $length; $i++) { 
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; 
} 
} 
return $strcut.$dot; 
} 
$str = "欢迎 visit 简明 nowamagic"; 
$str_result = get_word($str, 12); 
echo $str_result;

测试运行结果:
欢迎 visit..
PHP 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
php适配器模式介绍
Aug 14 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
PHP加密解密类实例代码
Jul 20 PHP
Laravel5权限管理方法详解
Jul 26 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
PHP操作数组的一些函数整理介绍
Jul 17 #PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 #PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 #PHP
PHP二维数组的去重问题解析
Jul 17 #PHP
简单的PHP多图上传小程序代码
Jul 17 #PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 #PHP
PHP 验证码的实现代码
Jul 17 #PHP
You might like
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php经典算法集锦
2015/11/14 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python人脸识别初探
2017/12/21 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
浅谈python写入大量文件的问题
2018/11/09 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
eBay德国站:eBay.de
2017/09/14 全球购物
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
如何执行一个shell程序
2012/11/23 面试题
班主任寄语2015
2015/02/26 职场文书
军事博物馆观后感
2015/06/05 职场文书
老人与海读书笔记
2015/06/26 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python