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 相关文章推荐
一个MYSQL操作类
Nov 16 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
如何使用Strace调试工具
Jun 03 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
Symfony查询方法实例小结
Jun 28 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 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
PL-880隐藏功能
2021/03/01 无线电
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中学习K-Means和图片压缩
2017/11/20 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
python基础教程之while循环
2019/08/14 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
django中使用POST方法获取POST数据
2019/08/20 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
小学家长评语大全
2014/04/16 职场文书
销售活动策划方案
2014/08/26 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
企业承诺书格式范文
2015/04/28 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
初三化学教学反思
2016/02/22 职场文书
Python基础之进程详解
2021/05/21 Python
nginx+lua单机上万并发的实现
2021/05/31 Servers
Node实现搜索框进行模糊查询
2021/06/28 Javascript