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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php数组键名技巧小结
2015/02/17 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
javascript关于继承解析
2016/05/10 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
python利用platform模块获取系统信息
2020/10/09 Python
phpquery中文手册
2021/03/18 PHP
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
保密普查工作实施方案
2014/02/25 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
英文版辞职信
2015/02/28 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
新年晚会开场白
2015/05/29 职场文书
毕业班工作总结
2015/08/10 职场文书
2016年母亲节寄语
2015/12/04 职场文书