您的位置:首页 > 编程语言 > PHP开发

PHP 截取字符串的函数

2014-04-28 21:47 363 查看
/**
 * 截取字符串的函数
 *
 * @param	string		$str		被截取的字符串
 * @param	int			$length		截取的长度
 * $param	string		$charset	编码设置,utf8,gbk
 *
 * @return  string
 */
function sub_str($str, $length = 0, $charset='utf8') {
	$str = trim($str);
	$strlength = strlen($str);
	$charset = strtolower($charset);//将字符串转化为小写
        $i=0;
	if ($charset == 'utf8') {
		$l = 0;
		
		while ($i < $strlength) {
			if (ord($str{$i}) < 0x80) {//返回字符的 ASCII 码值
				$l++; $i++;
			} else if (ord($str{$i}) < 0xe0) {
				$l++; $i += 2; 
			} else if (ord($str{$i}) < 0xf0) { 
				$l += 2; $i += 3; 
			} else if (ord($str{$i}) < 0xf8) {
				$l += 1; $i += 4; 
			} else if (ord($str{$i}) < 0xfc) { 
				$l += 1; $i += 5; 
			} else if (ord($str{$i}) < 0xfe) { 
				$l += 1; $i += 6; 
			}

			if ($l >= $length) { 
				$newstr = substr($str, 0, $i);
				break;
			}
		}
		if($l < $length) {
			return $str;
		}
	} elseif($charset == 'gbk') {
		if ($length == 0 || $length >= $strlength) {
			return $str;
		}
		while ($i <= $strlength) {
			if (ord($str{$i}) > 0xa0) { 
				$l += 2; $i += 2;
			} else {
				$l++; $i++;
			}

			if ($l >= $length) { 
				$newstr = substr($str, 0, $i);
				break;
			}
		}
	}

	return $newstr;
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: