php中文字符串截取方法实例总结


Posted in PHP onSeptember 30, 2014

本文实例总结了php中文字符串截取方法,非常实用的技巧。分享给大家供大家参考。具体方法分析如下:

用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。

解决办法如下:

1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。

2、自己书写截取函数,但效率不如用mbstring扩展库来得高。

3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。

substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

举2个例子:

① mb_substr示例

<?php
echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
//输出:这样一来我的字
?>

② mb_strcut示例

<?php
echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
//输出:这样一
?>

通过上述示例可见mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

PHP实现中文字串截取无乱码的方法:

<?php
//此函数完成带汉字的字符串取串
function substr_CN($str,$mylen){ 
$len=strlen($str);
$content='';
$count=0;
for($i=0;$i<$len;$i++){
if(ord(substr($str,$i,1))>127){
$content.=substr($str,$i,2);
$i++; 
}else{
$content.=substr($str,$i,1);
}
if(++$count==$mylen){
break;
}
}
echo $content;
}

$str="34中华人民共和国56";
substr_CN($str,3);//输出34中
?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
解析isset与is_null的区别
Aug 09 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
thinkphp的c方法使用示例
Feb 24 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
twig模板获取全局变量的方法
Feb 05 PHP
php多进程应用场景实例详解
Jul 22 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 #PHP
php中运用http调用的GET和POST方法示例
Sep 29 #PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 #PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 #PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 #PHP
推荐25款php中非常有用的类库
Sep 29 #PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 #PHP
You might like
php通过rmdir删除目录的简单用法
2015/03/18 PHP
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Angular模板表单校验方法详解
2017/08/11 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
python绘制热力图heatmap
2020/03/23 Python
python opencv摄像头的简单应用
2019/06/06 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
护士专业推荐信
2013/11/02 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
会计主管竞聘书
2015/09/15 职场文书