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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
PHP6 mysql连接方式说明
Feb 09 PHP
php代码书写习惯优化小结
Jun 20 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
laravel清除视图缓存的代码
Oct 23 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
关于PHP中interface的用处详解
Jul 26 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
python列表操作使用示例分享
2014/02/21 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
校长岗位职责
2013/11/26 职场文书
师范学院教师自荐书
2014/01/31 职场文书
企业内部培训方案
2014/02/04 职场文书
经典洗发水广告词
2014/03/13 职场文书
烟台的海导游词
2015/02/02 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
改造DE1103三步曲
2022/04/07 无线电