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来自动调用不同服务器上的flash
Oct 09 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php商品对比功能代码分享
Sep 24 PHP
PHP实现添加购物车功能
Mar 06 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
php探针使用原理和技巧讲解
Sep 17 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 文件上传功能实现代码
2009/06/24 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
也说JavaScript中String类的replace函数
2011/09/22 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
python中遍历文件的3个方法
2014/09/02 Python
Python单链表的简单实现方法
2014/09/23 Python
Python实现注册登录系统
2017/08/08 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
奥利奥广告词
2014/03/20 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
教室标语大全
2014/06/21 职场文书
拆迁委托协议书
2014/09/15 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
安全先进个人材料
2014/12/29 职场文书
小学同学聚会感言
2015/07/30 职场文书