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获取网页内容方法总结
Dec 04 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
Jul 29 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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实现图片简单上传
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
php实现微信公众号无限群发
2015/10/11 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
vue router 配置路由的方法
2018/07/26 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python检测网站链接是否已存在
2016/04/07 Python
详解python的数字类型变量与其方法
2016/11/20 Python
python版本五子棋的实现代码
2018/12/11 Python
对python调用RPC接口的实例详解
2019/01/03 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
Django后台admin的使用详解
2019/07/08 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
为什么称python为胶水语言
2020/06/16 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
预备党员转正思想汇报
2014/01/12 职场文书
2014年发展党员工作总结
2014/11/12 职场文书