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 相关文章推荐
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
php 将excel导入mysql
Nov 09 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
php存储过程调用实例代码
Feb 03 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
php调整服务器时间的方法
Apr 03 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
php封装的page分页类完整实例
Oct 18 PHP
Laravel配合jwt使用的方法实例
Oct 25 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
第十三节--对象串行化
2006/11/16 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python实现RSA加密(解密)算法
2016/02/17 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python类super()及私有属性原理解析
2020/06/15 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
求职推荐信范文
2013/12/01 职场文书
化学实验员岗位职责
2013/12/28 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
优秀员工事迹材料
2014/12/20 职场文书
给学校的建议书400字
2015/09/14 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python