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环境搭建最新方法
Sep 05 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
php 引用(&amp;)详解
Nov 20 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP页面中文乱码分析
Oct 29 PHP
php字符串函数学习之substr()
Mar 27 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
详解no input file specified 三种解决方法
Nov 29 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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php探针不显示内存解决方法
2019/09/17 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
js图片处理示例代码
2014/05/12 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
在Python中使用第三方模块的教程
2015/04/27 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
简单了解python数组的基本操作
2019/11/26 Python
python几种常用功能实现代码实例
2019/12/25 Python
Python map及filter函数使用方法解析
2020/08/06 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
渔夫的故事教学反思
2014/02/14 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
学期个人自我总结
2015/02/13 职场文书
2015个人半年总结范文
2015/03/09 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书