PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]


Posted in PHP onDecember 16, 2011

substr --- 取得部份字符串
语法 : string substr (string string, int start [, int length])
说明 :
substr( )传回 string的一部份字符串,由参数 start和 length指定。
如果 start是正数,传回的字符串将会从 string的第 start个字元开始。
Example :

<?php 
$rest = substr ("abcdef", 1); // returns "bcdef" 
$rest = substr ("abcdef", 1, 3); // returns "bcd" 
?>

如果 start是负数,传回的字符串将会从 string结尾的第 start个字开始。
Example :
<?php 
$rest = substr ("abcdef", -1); // returns "f" 
$rest = substr ("abcdef", -2); // returns "ef" 
$rest = substr ("abcdef", -3, 1); // returns "d" 
?>

如果有给予参数 length而且是正数时,传回的字符串将会从 start传回 length个字元。
如果有给予参数 length而且是负数时,传回的字符串将会结束于 string结尾的第 length个字元。
Example :
<?php 
$rest = substr ("abcdef", 1, -1); // returns "bcde" 
?>

dongyue,2005-01-07 11:10:41
substr --- 取得部份字符串
语法 : string substr (string string, int start [, int length])
说明 :
substr( )传回 string的一部份字符串,由参数 start和 length指定。
如果 start是正数,传回的字符串将会从 string的第 start个字元开始。
Example :
<?php 
$rest = substr ("abcdef", 1); // returns "bcdef" 
$rest = substr ("abcdef", 1, 3); // returns "bcd" 
?>

如果 start是负数,传回的字符串将会从 string结尾的第 start个字开始。
Example :
<?php 
$rest = substr ("abcdef", -1); // returns "f" 
$rest = substr ("abcdef", -2); // returns "ef" 
$rest = substr ("abcdef", -3, 1); // returns "d" 
?>

如果有给予参数 length而且是正数时,传回的字符串将会从 start传回 length个字元。
如果有给予参数 length而且是负数时,传回的字符串将会结束于 string结尾的第 length个字元。
Example :
<?php 
$rest = substr ("abcdef", 1, -1); // returns "bcde" 
?>

Utf-8、gb2312都支持的汉字截取函数
//截取中文字符串 
/* 
Utf-8、gb2312都支持的汉字截取函数 
cut_str(字符串, 截取长度, 开始长度, 编码); 
编码默认为 utf-8 
开始长度默认为 0 
*/function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') 
{ 
if($code == 'UTF-8') 
{ 
$pa ="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); 
return join('', array_slice($t_string[0], $start, $sublen)); 
} 
else 
{ 
$start = $start*2; 
$sublen = $sublen*2; 
$strlen = strlen($string); 
$tmpstr = ''; for($i=0; $i<$strlen; $i++) 
{ 
if($i>=$start && $i<($start+$sublen)) 
{ 
if(ord(substr($string, $i, 1))>129) 
{ 
$tmpstr.= substr($string, $i, 2); 
} 
else 
{ 
$tmpstr.= substr($string, $i, 1); 
} 
} 
if(ord(substr($string, $i, 1))>129) $i++; 
} 
if(strlen($tmpstr)<$strlen ) $tmpstr.= ""; 
return $tmpstr; 
} 
} 
$str="三水点靠木一个不错的网站"; 
echo cut_str($str, 8, 5, 'gb2312');
PHP 相关文章推荐
PHP+javascript液晶时钟
Oct 09 PHP
PHP数据类型的总结分析
Jun 13 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHP的几个常用加密函数
Feb 03 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
详解php用static方法的原因
Sep 12 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 #PHP
通达OA公共代码 php常用检测函数
Dec 14 #PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 #PHP
php中日期加减法运算实现代码
Dec 08 #PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 #PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 #PHP
PHP新手NOTICE错误常见解决方法
Dec 07 #PHP
You might like
elgg 获取文件图标地址的方法
2010/03/20 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
python logging添加filter教程
2019/12/24 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
简述数据库的设计过程
2015/06/22 面试题
某科技软件测试面试题
2013/05/19 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
酒店司机岗位职责
2013/12/14 职场文书
绩效工资分配方案
2014/01/18 职场文书
优秀员工评语
2014/02/10 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
民事起诉书范本
2015/05/19 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL