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自动跳转中英文页面
Jul 29 PHP
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
基于php无限分类的深入理解
Jun 02 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php验证码实现代码(3种)
Sep 07 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
php中__toString()方法用法示例
Dec 07 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 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作为Shell脚本语言使用
2006/10/09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
Python数据存储之 h5py详解
2019/12/26 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
中专毕业自我鉴定
2013/10/16 职场文书
传播学专业毕业生自荐信
2013/11/04 职场文书
代理协议书
2014/04/22 职场文书
团代会宣传工作方案
2014/05/08 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
新学期主题班会
2015/08/17 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python
springcloud整合seata
2022/05/20 Java/Android