我需要帮助才能保留右边的数字(在零之前)在这个例子中:
$var = 'LMO0000000381W'
=>只保持381
我从substr($var, 3, -1);
开始,它给了我0000000381
,但它可能在其他数字中的零点困扰我。那些是我需要有效的案件
0000000381 => 381
0000003081 => 3081
0000030810 => 30810
0000053081 => 53081
答案 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")`