码迷,mamicode.com
首页 > Web开发 > 详细

php 截取字符串

时间:2015-02-01 20:22:57      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

 1     /**
 2      * 方法库-截取字符串-【该函数作者未知】
 3      * @param string  $string 字符串  
 4      * @param int     $length 字符长度
 5      * @param string  $dot    截取后是否添加...
 6      * @param string  $charset编码
 7      * @return string
 8      */
 9     public function cutstr($string, $length, $dot = ‘ ...‘, $charset = ‘utf-8‘) {
10         if (strlen($string) <= $length) {
11             return $string;
12         }
13         $string = str_replace(array(‘&amp;‘, ‘&quot;‘, ‘&lt;‘, ‘&gt;‘), array(‘&‘, ‘"‘, ‘<‘, ‘>‘), $string);
14         $strcut = ‘‘;
15         if (strtolower($charset) == ‘utf-8‘) {
16             $n = $tn = $noc = 0;
17             while ($n < strlen($string)) {
18                 $t = ord($string[$n]);                //ASCII?
19                 if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
20                     $tn = 1; $n++; $noc++;
21                 } elseif (194 <= $t && $t <= 223) {
22                     $tn = 2; $n += 2; $noc += 2;
23                 } elseif (224 <= $t && $t < 239) {
24                     $tn = 3; $n += 3; $noc += 2;
25                 } elseif (240 <= $t && $t <= 247) {
26                     $tn = 4; $n += 4; $noc += 2;
27                 } elseif (248 <= $t && $t <= 251) {
28                     $tn = 5; $n += 5; $noc += 2;
29                 } elseif ($t == 252 || $t == 253) {
30                     $tn = 6; $n += 6; $noc += 2;
31                 } else {
32                     $n++;
33                 }
34                 if($noc >= $length) {
35                     break;
36                 }
37             }
38             if ($noc > $length) {
39                 $n -= $tn;
40             }
41             $strcut = substr($string, 0, $n);
42         } else {
43             for ($i = 0; $i < $length; $i++) {
44                 $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
45             }
46         }
47         $strcut = str_replace(array(‘&‘, ‘"‘, ‘<‘, ‘>‘), array(‘&amp;‘, ‘&quot;‘, ‘&lt;‘, ‘&gt;‘), $strcut);
48         return $strcut.$dot;
49     }

 

php 截取字符串

标签:

原文地址:http://www.cnblogs.com/jackoogle/p/4265946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!