php最精确的字符串长度截取函数

 
更多

php 最精确的字符串长度截取函数,说是最精确截取长度,其实我也不敢确定是否是最精确的,具体有多精确看下面的效果就知道了:

先上测试用的字符串:

<?php
header("Content-Type:text/html;charset=utf-8");

echo cn_substr_utf8('我是一个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('【我,是一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('我是一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('我是,一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('我,是,一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('我是asd一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('【我i\'m[是一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,个,和哈,哦也,,国家!',12);
echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12);

下面是精确截取字符串的效果图:

php最精确的字符串长度截取函数

具体函数代码如下:

//utf-8中文截取,单字节截取模式
function cn_substr_utf8($str,$length,$append='...',$start=0){
	if(strlen($str)<$start+1){
		return '';
	}
	preg_match_all("/./su",$str,$ar);
	$str2='';
	$tstr='';
	//www.phpernote.com
	for($i=0;isset($ar[0][$i]);$i++){
		if(strlen($tstr)<$start){
			$tstr.=$ar[0][$i];
		}else{
			if(strlen($str2)<$length + strlen($ar[0][$i])){
				$str2.=$ar[0][$i];
			}else{
				break;
			}
		}
	}
	return $str==$str2?$str2:$str2.$append;
}
打赏

本文固定链接: https://www.cxy163.net/archives/4625 | 绝缘体

该日志由 绝缘体.. 于 2013年05月23日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: php最精确的字符串长度截取函数 | 绝缘体
关键字: , , , ,

php最精确的字符串长度截取函数:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter