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实现登陆验证码(类似条行码状)
Oct 09 PHP
用PHP来写记数器(详细介绍)
Oct 09 PHP
php 禁止页面缓存输出
Jan 07 PHP
php db类库进行数据库操作
Mar 19 PHP
PHP运行时强制显示出错信息的代码
Apr 20 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
php常用数学函数汇总
Nov 21 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
详细分析PHP7与PHP5区别
Jun 26 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中用正则表达式清除字符串的空白
2011/01/17 PHP
php实现aes加密类分享
2014/02/16 PHP
Yii学习总结之安装配置
2015/02/22 PHP
php strftime函数的详细用法
2018/06/21 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
javascript中的面向对象
2017/03/30 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
python实现猜数字小游戏
2020/03/24 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
三严三实对照检查材料思想汇报
2014/09/28 职场文书
计算机实训报告总结
2014/11/05 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL