格式化数字以消除左侧的零

时间:2014-04-30 15:17:09

标签: php format substr

我需要帮助才能保留右边的数字(在零之前)在这个例子中:

$var = 'LMO0000000381W' =>只保持381

我从substr($var, 3, -1);开始,它给了我0000000381,但它可能在其他数字中的零点困扰我。那些是我需要有效的案件

0000000381 => 381
0000003081 => 3081
0000030810 => 30810
0000053081 => 53081

3 个答案:

答案 0 :(得分:4)

给定$var = 'LMO0000000381W'字母,这应该这样做:

echo preg_replace('/[^1-9]*([0-9]*)/', '$1', $var);

或者:

preg_match('/[1-9]\d+/', $var, $matches);
echo $matches[0];

答案 1 :(得分:3)

一旦你提取了数字,这是一个困难的部分,几乎任何事情都可以做到:

<?php

$data = '0000000381';
var_dump( (int)$data );
var_dump( (float)$data );
var_dump( number_format($data) );
var_dump( sprintf('%d', $data) );

...打印:

int(381)
float(381)
string(3) "381"
string(3) "381"

编辑:如果你想要其他一些想法,这里有一个未经完全测试的正则表达式:

$var = 'LMO0000000381W';
if( preg_match('/^[A-Z]*0*([0-9]+)[A-Z]*$/i', $var, $matches) ){
    var_dump($matches[1]);
}

但你的系统还不错。

答案 2 :(得分:2)

我们有两种方法可以做到这一点

1.使用PHP的ltrim函数

$str = ltrim($str, '0');

2.使用类型转换

 `(string)((int)"00000234892839")`