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 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
浅析php学习的路线图
Jul 10 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php实现json编码的方法
2015/07/30 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
python list中append()与extend()用法分享
2013/03/24 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python urllib爬虫模块使用解析
2019/09/05 Python
浅谈django 重载str 方法
2020/05/19 Python
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
电脑教师的自我评价
2013/12/18 职场文书
会计与审计毕业生自荐信范文
2013/12/30 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang