PHP字符截取函数,兼容各类gbk,utf-8编码
在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数
例1
<?php 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
<?php 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函数来显示字符串:
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."
教程网址:http://www.phprm.com/develop/52673.html
欢迎收藏∩_∩但请保留本文链接。