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 文件上传进度条的两种实现方法的代码
Nov 25 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
May 10 PHP
PHP编写RESTful接口
Feb 23 PHP
php调用自己java程序的方法详解
May 13 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
php中的依赖注入实例详解
Aug 14 PHP
laravel 判断查询数据库返回值的例子
Oct 11 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/13 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
js实现登录与注册界面
2017/11/01 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python中int()函数的用法浅析
2017/10/17 Python
python使用epoll实现服务端的方法
2018/10/16 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
Python3 读取Word文件方式
2020/02/13 Python
python实现最速下降法
2020/03/24 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
高级工程师岗位职责
2013/12/15 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
转让协议书范本
2014/04/15 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
python之json文件转xml文件案例讲解
2021/08/07 Python