寫一個函數,將一個字符串(如: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 }