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 相关文章推荐
图书管理程序(二)
Oct 09 PHP
一个自定义位数的php多用户计数器代码
Mar 11 PHP
网友原创的PHP模板类代码
Sep 07 PHP
PHP 面向对象实现代码
Nov 11 PHP
php define的第二个参数使用方法
Nov 04 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
php显示页码分页类的封装
Jun 08 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP预定义超全局数组变量小结
Aug 20 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变量可用字符
2014/05/28 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
python散点图实例之随机漫步
2018/08/27 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
python3.7添加dlib模块的方法
2020/07/01 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
三八节标语
2014/06/27 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
党小组评议意见
2015/06/02 职场文书
垂直极限观后感
2015/06/08 职场文书
升学宴祝酒词
2015/08/11 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
Redis的字符串是如何实现的
2021/10/24 Redis
springboot中的pom文件 project报错问题
2022/01/18 Java/Android