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的文章管理系统(二)
Oct 09 PHP
Php+SqlServer实现分页显示
Oct 09 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
跟我学Laravel之快速入门
Oct 15 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
laravel Model 执行事务的实现
Oct 10 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
js 链式延迟执行DOME
2012/01/04 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python 列表list使用介绍
2014/11/30 Python
Python字符串处理实现单词反转
2017/06/14 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
美术师范毕业生自荐信
2013/11/16 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
投资意向书范本
2014/04/01 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
党支部特色活动方案
2014/08/20 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
清明节寄语2015
2015/03/23 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android