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 中dirname(_file_)讲解
Mar 18 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
解析php取整的几种方式
Jun 25 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
php获取当前url地址的方法小结
Jan 10 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue+element实现批量删除功能的示例
2018/02/28 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
python实现网页自动签到功能
2019/01/21 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
高一自我鉴定
2013/12/17 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
《王二小》教学反思
2014/02/27 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Spring 使用注解开发
2022/05/20 Java/Android