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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
作风大整顿心得体会
2014/09/10 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
教师岗位职责范本
2015/04/02 职场文书
西安事变观后感
2015/06/12 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android