php如何平均分割字符串 例分割为四部分

忘记说了 字符为中英混合的

首先你要确认该字符串的编码
如果是gbk的编码 则一个汉字占用2个字节 如果是utf-8编码的话 则占用3个字节。
<?
$s='这是1个中英混合的abcd';
$s=iconv('gbk','utf-8',$s);
echo $len=strlen($s);//取得字符串长度 一个gbk汉字是占用2个字节 而utf-8是占3个字节
echo "<br>";
echo $mblen=mb_strlen($s,'utf-8');//获取单词的长度 一个汉字是1个字节
?>

明白这个原理 就不难了 下面俺来写个函数给你

<?
$s='这是1个中英混合的abcd';
$s=iconv('gbk','utf-8',$s);//如果你确认你的字符串的编码是UTF-8就去掉这句
print_r(strSplit($s,4));
//字符串切割函数 str为字符串 num为每段分割为几
function strSplit($str,$num=4){
$len=mb_strlen($str,'utf-8');//获取字符串长度 每个汉字算1
$partNum=ceil($len/$num);
$arr=array();
for($i=0;$i<$partNum;$i++){
$begin=$i*$num;
$arr[]=iconv_substr($str,$begin,$num,'utf-8');
}
return $arr;
}
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-26
$str = 'asdhjiuygfrewsghbvfdfswe';
$len = strlen($str);
$part = ($len/4);
$arr = str_split($str, $part);
print_r($arr);

若想要平均分成4部分,必须得保证字符串的总长度是4的整数倍。追问

我的字符串里有中英文怎么办呢?

追答

这个我没试,如果是那样那就太不确定了,一个汉字(utf-8)3个字节,gb2312 好像是2个字节。那就不好弄了。好像是没有那样的函数,都是英文的就是我说的那种情况,你可以试试中英混合的,那样可能会出现乱码的。

追问

恩我试了就是出现了乱码。哎不好搞哟

追答

你实现什么功能呢?想做什么判断呢?说不定是你的切入点不对呢?也许你遇到的问题不应该这样解决。 加我的百度hi bd_fengzhenbo

第2个回答  2012-04-26
应该是使用split这个函数吧~

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网