如何删除字符串中的所有前导零

如果我有一根绳子

00020300504
00000234892839
000239074

我怎样才能去掉前面的零,这样我就只有这个了

20300504
234892839
239074

请注意,以上数字是随机生成的。

173836 次浏览
(string)((int)"00000234892839")

ltrim :

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

假设您希望删除三个或更多零的运行,并且您的示例是一个字符串:

    $test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);

如果我的假设错误,您可以使 regex 模式适合您所需要的。

这有用吗?

我不认为怀孕替代是解决问题的办法。 老线程,但只是碰巧今天寻找这一点。 lrim 和(整型)铸造是赢家。

<?php
$numString = "0000001123000";
$actualInt = "1123000";


$fixed_str1 = preg_replace('/000+/','',$numString);
$fixed_str2 = ltrim($numString, '0');
$fixed_str3 = (int)$numString;


echo $numString . " Original";
echo "<br>";
echo $fixed_str1 . " Fix1";
echo "<br>";
echo $fixed_str2 . " Fix2";
echo "<br>";
echo $fixed_str3 . " Fix3";
echo "<br>";
echo $actualInt . " Actual integer in string";


//output


0000001123000 Origina
1123 Fix1
1123000 Fix2
1123000 Fix3
1123000 Actual integer in tring

正则表达式已被提出,但并不正确:

<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>

输出为:

4523423400023402340240

正则表达式的背景: 字符串的开始的 ^信号和 +符号信号多或没有前一个符号。因此,正则表达式 ^0+匹配字符串开头的所有零。

与另一个建议类似,只是不会消除实际的零:

if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}

或者像建议的那样(从 PHP 5.3开始) ,可以使用速记三元运算符:

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

不知道为什么人们用这么复杂的方法来实现这么简单的事情!

这就是最简单的方法(这里解释的是: https://nabtron.com/kiss-code/) :

$a = '000000000000001';
$a += 0;


echo $a; // will output 1

可以在变量中添加“ +”,

例如:

$numString = "0000001123000";
echo +$numString;

Ajay Kumar 提供了最简单的 < em > echo + $numString; 我用这些:

echo round($val = "0005");
echo $val = 0005;
//both output 5
echo round($val = 00000648370000075845);
echo round($val = "00000648370000075845");
//output 648370000075845, no need to care about the other zeroes in the number
//like with regex or comparative functions. Works w/wo single/double quotes

实际上,任何数学函数都会从“字符串”中获取数字,并像这样对待它。它比任何正则表达式或比较函数都要简单得多。 我在 php.net 上看到的,不记得在哪儿了。

进出口固定与这种方式。

它非常简单。只传递一个字符串它的从零开始的字符串。

function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}

一个简短的黑客可以使用 round ()它将删除前导零。

echo round('00020300504'); //20300504