php截取字符串函数分享


Posted in PHP onFebruary 02, 2015

经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中的substr函数就可以做的到,只不过PHP把二个函数合二为一了,这里再给大家分享一个更加优秀的截取字符串的函数。

/**

     * 方法库-截取字符串-【该函数作者未知】

     * @param string  $string 字符串  

     * @param int     $length 字符长度

     * @param string  $dot    截取后是否添加...

     * @param string  $charset编码

     * @return string

     */

    public function cutstr($string, $length, $dot = ' ...', $charset = 'utf-8') {

        if (strlen($string) <= $length) {

            return $string;

        }

        $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);

        $strcut = '';

        if (strtolower($charset) == 'utf-8') {

            $n = $tn = $noc = 0;

            while ($n < strlen($string)) {

                $t = ord($string[$n]);                //ASCIIֵ

                if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

                    $tn = 1; $n++; $noc++;

                } elseif (194 <= $t && $t <= 223) {

                    $tn = 2; $n += 2; $noc += 2;

                } elseif (224 <= $t && $t < 239) {

                    $tn = 3; $n += 3; $noc += 2;

                } elseif (240 <= $t && $t <= 247) {

                    $tn = 4; $n += 4; $noc += 2;

                } elseif (248 <= $t && $t <= 251) {

                    $tn = 5; $n += 5; $noc += 2;

                } elseif ($t == 252 || $t == 253) {

                    $tn = 6; $n += 6; $noc += 2;

                } else {

                    $n++;

                }

                if($noc >= $length) {

                    break;

                }

            }

            if ($noc > $length) {

                $n -= $tn;

            }

            $strcut = substr($string, 0, $n);

        } else {

            for ($i = 0; $i < $length; $i++) {

                $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];

            }

        }

        $strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);

        return $strcut.$dot;

    }

以上就是本文的全部内容,希望大家能够喜欢。

PHP 相关文章推荐
php实现mysql数据库备份类
Mar 20 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php页面防重复提交方法总结
Nov 25 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php多文件上传下载示例分享
Feb 20 PHP
php中使用url传递数组的方法
Feb 11 PHP
初识laravel5
Mar 02 PHP
php实现学生管理系统
Mar 21 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
php计算2个日期的差值函数分享
Feb 02 #PHP
php获取当月最后一天函数分享
Feb 02 #PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
Feb 02 #PHP
php递归创建目录的方法
Feb 02 #PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 #PHP
PHP中开启gzip压缩的2种方法
Jan 31 #PHP
PHP调试函数和日志记录函数分享
Jan 31 #PHP
You might like
php PDO中文乱码解决办法
2009/07/20 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
幼儿园教师培训制度
2014/01/16 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
新兵入伍心得体会
2014/09/04 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB