群内突然有人【桔子】提问:
- $str = '0001';//这个数有可能是'001020'……请问怎么取到前导有多少个'0'?('0001'结果为3,'001020'结果为2)
然后自问自答,说这些是他同事写的:
- //算法1
- $str = '001020';
- echo strlen(str_replace((int)$str, '', $str));
- //算法2
- $text = '0001';
- $zero = strlen($text) - strlen(ltrim($text, '0'));
- return $zero;
然后说了他自己写的:
- $string = '000 012012';
- $string = str_replace(' ', '', $string);
- $length = strlen($string);
- $x = 0;
- for ($i = 0; $i < $length; $i++)
- {
- $currentStr = $string{$i};
- if ($currentStr != 0)
- {
- break;
- }
- $x++;
- }
- echo $x;
最后我也写了两个,一个正则,一个是利用现有函数:
- $str = '00 0 000100002000';
- preg_match( "/^0{0,}/", str_replace( " ", "", $str ), $out );
- echo( $out[0] );
- $str = '00 0 000100002000';
- $tt = str_word_count(str_replace( " ", "", $str ),1,'0');
- echo( $tt[0] );
之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?
哈哈完事。。。