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 相关文章推荐
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
第五章 php数组操作
Dec 30 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php图像处理类实例
Jul 28 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
php面向对象程序设计入门教程
Jun 22 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 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
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python实现ip查询示例
2014/03/26 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python的装饰器使用详解
2017/06/26 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
JAVA程序员自荐书
2014/01/30 职场文书
车辆转让协议书
2014/09/24 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python