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程序的php代码
Apr 07 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 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/11/27 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
详解Python的单元测试
2015/04/28 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python 基于wx实现音乐播放
2020/11/24 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
养殖项目策划书范文
2014/01/13 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
请假条范文大全
2014/04/10 职场文书
小学亲子活动总结
2014/07/01 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL