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 文件上传源码分析(RFC1867)
Oct 30 PHP
php中对2个数组相加的函数
Jun 24 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
laravel 执行迁移回滚示例
Oct 23 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(7) php 字符串相关应用
2010/03/05 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
jquery select操作的日期联动实现代码
2009/12/06 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vant实现购物车功能
2020/06/29 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
使用python3.5仿微软记事本notepad
2016/06/15 Python
Python中functools模块函数解析
2017/03/12 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
电气专业推荐信范文
2013/11/18 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
合作协议书模板
2014/10/10 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
辩论会主持词
2015/07/03 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
医院病假条范文
2015/08/17 职场文书
初三数学教学反思
2016/02/17 职场文书
员工工作心得体会
2019/05/07 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server