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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php 表单验证实现代码
2009/03/10 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python 功能和特点(新手必学)
2015/12/30 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Django保护敏感信息的方法示例
2019/05/09 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
授权委托书格式
2014/07/31 职场文书
感恩教师主题班会
2015/08/12 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript