PHP字符截取函数,兼容各类gbk,utf-8编码
程序员文章站
2022-05-07 11:07:56
...
在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数
例1
function CsubStrPro($str, $start, $length, $charset = "utf-8", $suffix = false) { if (function_exists ( "mb_substr" )) return mb_substr ( $str, $start, $length, $charset ); $re ['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re ['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $re ['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; $re ['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; preg_match_all ( $re [$charset], $str, $match ); $slice = join ( "", array_slice ( $match [0], $start, $length ) ); if ($suffix) return $slice . "…"; return $slice; }
例2
function subString_UTF8($str, $start, $lenth) { $len = strlen($str); $r = array(); $n = 0; $m = 0; for($i = 0; $i < $len; $i++) { $x = substr($str, $i, 1); $a = base_convert(ord($x), 10, 2); $a = substr('00000000'.$a, -8); if ($n < $start){ if (substr($a, 0, 1) == 0) { }elseif (substr($a, 0, 3) == 110) { $i += 1; }elseif (substr($a, 0, 4) == 1110) { $i += 2; } $n++; }else{ if (substr($a, 0, 1) == 0) { $r[ ] = substr($str, $i, 1); }elseif (substr($a, 0, 3) == 110) { $r[ ] = substr($str, $i, 2); $i += 1; }elseif (substr($a, 0, 4) == 1110) { $r[ ] = substr($str, $i, 3); $i += 2; }else{ $r[ ] = ''; } if (++$m >= $lenth){ break; } } } return $r; } // End subString_UTF8; }// End String
#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:例2
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."
以上就是PHP字符截取函数,兼容各类gbk,utf-8编码的内容,更多相关内容请关注PHP中文网(www.php.cn)!
推荐阅读
-
PHP 字符串编码截取函数(兼容utf-8和gb2312)
-
PHP 截取字符串函数整理(支持gb2312和utf-8)
-
ASP UTF-8编码下字符串截取和获取长度函数
-
完美的2个php检测字符串是否是utf-8编码函数分享
-
php截取字符串之截取utf8或gbk编码的中英文字符串示例
-
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
-
php中支持多种编码的中文字符串截取函数!
-
PHP 字符串编码截取函数(兼容utf-8和gb2312)
-
g236 PHP 字符串编码截取函数(兼容utf-8和gb2312)
-
PHP采集利器:根据开始字符串和结束字符串截取需要的采集内容数据,纯PHP函数高性能实现,支持多种字符编码格式