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令牌 Token改进版
Jul 18 PHP
php 数学运算验证码实现代码
Oct 11 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
解析php dirname()与__FILE__常量的应用
Jun 24 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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 zip扩展Linux下安装过程分享
2014/05/05 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
把pandas转换int型为str型的方法
2019/01/29 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
详解用python写一个抽奖程序
2019/05/10 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
法制宣传教育方案
2014/05/09 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
车贷收入证明范本
2014/09/14 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android