如果我有一个字符串
00020300504
00000234892839
000239074
如何摆脱前导零,以便我只有这个
20300504
234892839
239074
请注意,上面的数字是随机生成的。
答案 0 :(得分:422)
$str = ltrim($str, '0');
答案 1 :(得分:10)
(string)((int)"00000234892839")
答案 2 :(得分:9)
不知道为什么人们使用如此复杂的方法来实现这么简单的事情!和正则表达式?哇!
在这里,您可以采用最简单最简单的方式(如下所述:https://nabtron.com/kiss-code/):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
答案 3 :(得分:8)
与另一个建议类似,除了不会删除实际的零:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
答案 4 :(得分:6)
你可以添加" +"在你的变量中,
示例:
$numString = "0000001123000";
echo +$numString;
答案 5 :(得分:3)
正在提出正则表达式,但不正确:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
然后输出:
4523423400023402340240
正则表达式背景:
^
信号开头的+
信号和^0+
符号表示更多或没有前面的符号。因此,正则表达式{{1}}匹配字符串开头的所有零。
答案 6 :(得分:2)
我认为preg_replace不是答案.. 老线程,但今天恰好正在寻找这个。 ltrim和(int)cast是赢家。
<?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
答案 7 :(得分:0)
我用这种方式固定。
非常简单。只传递一个字符串,删除字符串的零开始。
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
答案 8 :(得分:-1)
Ajay Kumar提供最简单的 echo + $ numString; 我用这些:
file
实际上,任何数学函数都会从“字符串”中取出数字并对其进行处理。它比任何正则表达式或比较函数都简单得多。 我在php.net中看到,不记得在哪里。
答案 9 :(得分:-2)
假设您要删除三个或更多零的运行,并且您的示例是一个字符串:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
如果我的假设已经关闭,您可以使正则表达式模式符合您的需要。
这有帮助吗?