如果我有一个字符串
00020300504
00000234892839
000239074
如何去除前导零,使得只剩下这个:
20300504
234892839
239074
请注意,上面的数字是随机生成的。
ltrim
函数:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(随机数),结果是2147483647。但如果我将其转换为浮点数,则似乎可以正常工作。很奇怪。 - JamesHalsall$numString = "0000001123000";
echo +$numString;
与另一个建议类似,但不会覆盖实际的零值:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
或者,就像建议的那样(从PHP 5.3开始),可以使用简写的三元运算符:
$str = ltrim($str, '0') ?: '0';
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
ltrim()
并没有什么复杂的地方,它是一个具有明确含义的函数,专门为此目的而设计。 - BadHorsie正则表达式已经被提出,但并不正确:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
输出结果如下:
4523423400023402340240
正则表达式背景:
^
表示字符串的开头,+
表示前面的字符出现一次或多次。因此,正则表达式 ^0+
匹配字符串开头的所有零。
preg_replace() expects at least 3 parameters, 2 given
- TarangP我认为preg_replace不是答案...虽然这个帖子很老,但今天恰好碰到了这个问题。ltrim和(int)强制类型转换是最佳选择。
<?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
echo round('00020300504'); //20300504
我用这种方法解决了问题。
非常简单,只需传递一个字符串,它会删除字符串开头的零。
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar 提供了最简单的 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上看到过,不记得具体位置了。
<br>
标签来分隔数字;它们实际上是您字符串的一部分吗? - erisco