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 相关文章推荐
Discuz 模板语句分析及知识技巧
Aug 21 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
windows7配置Nginx+php+mysql的详细教程
Sep 04 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
PHP asXML()函数讲解
Feb 03 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP实现百度人脸识别
2019/05/06 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Python线程指南分享
2019/11/19 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
普通院校学生的自荐信
2013/11/27 职场文书
大学生自荐信
2013/12/11 职场文书
大学生职业规划论文
2014/01/11 职场文书
竞聘演讲稿
2014/04/24 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
python异常中else的实例用法
2021/06/15 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android