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脚本的10个技巧(8)
Oct 09 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
使用Yii2实现主从数据库设置
Nov 20 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 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
javascript StringBuilder类实现
2008/12/22 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
使用JavaScript破解web
2018/09/28 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
详解python中的线程
2018/02/10 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Flask之flask-session的具体使用
2018/07/26 Python
用pycharm开发django项目示例代码
2018/10/24 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Python面向对象编程基础实例分析
2020/01/17 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
保卫钓鱼岛口号
2014/06/20 职场文书
代办委托书怎么写
2014/08/01 职场文书