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.ini 中文版
Oct 28 PHP
php5.2.0内存管理改进
Jan 22 PHP
php array_intersect()函数使用代码
Jan 14 PHP
php db类库进行数据库操作
Mar 19 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 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中遍历stdclass object的实现代码
2011/06/09 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python删除过期log文件操作实例解析
2018/01/31 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
电子商务专业学生的学习自我评价
2013/10/27 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
违章停车检讨书
2014/10/21 职场文书
高三语文复习计划
2015/01/19 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers