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下使用无限生命期Session的方法
Mar 16 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
php时间计算相关问题小结
May 09 PHP
降低PHP Redis内存占用
Mar 23 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 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
php开发微信支付获取用户地址
2015/10/04 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
使用angular写一个hello world
2015/01/23 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
python实现SMTP邮件发送功能
2020/06/16 Python
python中解析json格式文件的方法示例
2017/05/03 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
Python错误的处理方法
2020/06/23 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
责任胜于能力演讲稿
2014/05/20 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
党支部特色活动方案
2014/08/20 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
工程部岗位职责范本
2015/04/11 职场文书
外出培训学习心得体会
2016/01/18 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
Python 中面向接口编程
2022/05/20 Python
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL