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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
php短域名转换为实际域名函数
Jan 17 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
PHP积分兑换接口实例
Feb 09 PHP
php简单实现快速排序的方法
Apr 04 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP实现简单计算器小程序
Aug 28 PHP
Swoole实现异步投递task任务案例详解
Apr 02 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
js Dialog 实践分享
2012/10/22 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
django输出html内容的实例
2018/05/27 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
用Python实现职工信息管理系统
2020/12/30 Python
法务专员岗位职责
2014/01/02 职场文书
锅炉工岗位职责
2015/02/13 职场文书
员工加薪申请报告
2015/05/15 职场文书