写一个函数,将一个字符串(如:1234567890),转换成(如1,234,567,890)每3位用逗号隔开的形式。
三种方法:
方法一、使用chunk_split函数将字符串用“ , ” 分割成小块。
1 function str($str){ 2 //先反转字符串 3 $new_str=strrev($str); 4 //在用chunk_split函数将字符串用“ , ” 分割成小块 5 $new_str= chunk_split($new_str,3,','); 6 //去掉右边的逗号,返回出去 7 return strrev(rtrim($new_str,',')); 8 }
方法二、反转判断加逗号
1
2 function fanstr($str){ 3 //先将字符串反转 4 $rstr=strrev($str); 5 //求字符串长度 下标从0开始所以需要长度-1 6 $l=strlen($rstr)-1; 7 for($i=0;$i<=$l;$i++){ 8 //反转后字符串每3位加一个逗号,并且排除一种情况(i=0) 9 if($i%3==0 && $i!=0){ 10 $newstr.=','; 11 } 12 $newstr.=$rstr{$i}; 13 } 14 //最后再进行反转返回 15 return strrev($newstr); 16 }
方法三、正着判断加逗号
1 function zhengstr($str){ 2 //计算字符串长度 3 $strl=strlen($str); 4 //每3位加逗号,其余的也要使用逗号隔开。 5 //求字符串长度对3的余数,用来计算逗号放的位置 6 $y=$strl%3; 7 $l=$strl-1; 8 for($i=0;$i<=$l;$i++){ 9 //如果对3取余等于余数需要加逗号。并且排除(i=0)的情况 10 if($i%3==$y && $i!=0){ 11 $newstr.=','; 12 } 13 $newstr.=$str{$i}; 14 } 15 //返回处理后的字符串 16 return $newstr; 17 }
【中文下】写一个函数,将一个字符串(如:中国人来了我是中国人),转换成(如 中,国人来,了我是,中国人 )每3位用逗号隔开的形式
方法一、
1 function strToRev($str){ 2 //先用mb_strlen获取字符串字符编码下的字符长度 3 $len=mb_strlen($str,'utf-8'); 4 $new_str=""; 5 for($i=0;$i<$len;$i++){ 6 if($i%3==1&&$i!=0){ 7 $new_str .=","; 8 } 9 //使用mb_substr截取保证不乱码 10 $new_str .=mb_substr($str,$i,1,'utf-8');; 11 } 12 return $new_str; 13 }
方法二、
1 function strToRev2($str){ 2 //先转成数组 3 $arr=preg_split('//u',$str,-1,PREG_SPLIT_NO_EMPTY); 4 $count=count($arr); 5 $new_str=""; 6 for($i=0;$i<$count;$i++){ 7 if($i%3==1&&$i!=0){ 8 $new_str .=","; 9 } 10 $new_str .=$arr[$i]; 11 } 12 return $new_str; 13 }
方法三、
1 function strToRev3($str){ 2 //先转成数组 3 $arr=preg_split('//u',$str,-1,PREG_SPLIT_NO_EMPTY); 4 $count=count($arr); 5 $new_str=""; 6 $j=0;//统计 7 for($i=0;$i<$count;$i++){ 8 if($i%3==1&&$i!=0){ 9 $len=count($arr); 10 $j++; 11 //直接添加到数组中去 12 array_splice($arr,$i+$j-1,0,','); 13 } 14 } 15 return implode('',$arr); 16 17 }