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&amp;MYSQL服务器配置说明
Oct 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
浅谈php扩展imagick
Jun 02 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
smarty简单分页的实现方法
2014/10/27 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
基于AngularJS实现表单验证功能
2017/07/28 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
使用python遍历指定城市的一周气温
2017/03/31 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
销售人员个人求职信
2013/09/26 职场文书
监理员的岗位职责
2013/11/13 职场文书
研讨会主持词
2014/04/02 职场文书
出生公证书样本
2014/04/04 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
趣味运动会赞词
2015/07/22 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
JavaScript实现登录窗体
2021/06/22 Javascript
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js