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 向访客和爬虫显示不同的内容
Nov 09 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
selenium+python环境配置教程详解
2019/05/28 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
四年级下册教学反思
2014/02/01 职场文书
写求职信有什么意义
2014/02/17 职场文书
环保建议书500字
2014/05/14 职场文书
工程承包协议书范本
2014/09/29 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
辩论赛新闻稿
2015/07/17 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Python如何识别银行卡卡号?
2021/06/10 Python
k8s部署redis cluster集群的实现
2021/06/24 Redis