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自动获取字符串编码函数mb_detect_encoding
May 31 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
php中长文章分页显示实现代码
Sep 29 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
php以post形式发送xml的方法
Nov 04 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
Symfony2创建页面实例详解
Mar 18 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP校验15位和18位身份证号的类封装
Nov 07 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无限分类(树形类)
2013/09/28 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
javascript 回调函数详解
2014/11/11 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
jstree的简单实例
2016/12/01 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
js实现批量删除功能
2020/08/27 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
初步解析Python下的多进程编程
2015/04/28 Python
python记录程序运行时间的三种方法
2017/07/14 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Python实现疫情地图可视化
2021/02/05 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers