手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2009年11月25日的文章

一小段代码

群内突然有人【桔子】提问:

PHP代码
  1. $str = '0001';//这个数有可能是'001020'……请问怎么取到前导有多少个'0'?('0001'结果为3,'001020'结果为2)  

然后自问自答,说这些是他同事写的:

PHP代码
  1. //算法1  
  2. $str = '001020';  
  3. echo strlen(str_replace((int)$str''$str));  
  4.   
  5. //算法2  
  6. $text = '0001';  
  7. $zero = strlen($text) - strlen(ltrim($text'0'));  
  8. return $zero;  

然后说了他自己写的:

PHP代码
  1. $string = '000 012012';  
  2. $string = str_replace(' '''$string);  
  3. $length = strlen($string);  
  4.   
  5. $x = 0;  
  6. for ($i = 0; $i < $length$i++)  
  7. {  
  8. $currentStr = $string{$i};  
  9. if ($currentStr != 0)  
  10. {  
  11. break;  
  12. }  
  13. $x++;  
  14. }  
  15. echo $x;  

 

最后我也写了两个,一个正则,一个是利用现有函数:

 

PHP代码
  1. $str = '00 0 000100002000';  
  2. preg_match( "/^0{0,}/"str_replace" """$str ), $out );  
  3. echo$out[0] );  
  4.   
  5. $str = '00 0 000100002000';  
  6. $tt = str_word_count(str_replace" """$str ),1,'0');  
  7. echo$tt[0] );  

之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?

 

哈哈完事。。。