加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php截取字符串函数同享

发布时间:2023-04-17 12:54:09 所属栏目:PHP教程 来源:
导读:这里给大家分享的是一个使用php截取字符串的函数,非常实用,推荐给有需要的小伙伴。经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中

这里给大家分享的是一个使用php截取字符串的函数,非常实用,推荐给有需要的小伙伴。

经常看到有新手问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('&amp;', '&quot;', '&lt;', '&gt;'), 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('&amp;', '&quot;', '&lt;', '&gt;'), $strcut); 

        return $strcut.$dot; 

    } 

以上就是本文的全部内容,希望大家能够喜欢。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!