Answers:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(随机数),结果是2147483647。但是,如果将其强制转换为浮点数,则似乎可以正常工作。奇怪
不知道为什么人们使用如此复杂的方法来实现如此简单的事情!和正则表达式?哇!
在这里,您可以找到最简单的方法(如此处所述:https : //nabtron.com/kiss-code/):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
与另一个建议相似,但不会消除实际的零:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
或如建议的那样(从PHP 5.3开始),可以使用速记三元运算符:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
-没有多余的调整请求。
正则表达式已被提出,但不正确:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
输出为:
4523423400023402340240
正则表达式的背景:^
字符串开头的信号和+
符号表示或多或少的前一个信号。因此,正则表达式^0+
在字符串的开头匹配所有零。
preg_replace() expects at least 3 parameters, 2 given
我不认为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
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中看到了,不记得在哪里了。
假设您要删除三个或多个零的连续符,并且您的示例是一个字符串:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
如果我的假设无效,则可以使正则表达式模式适合您的需求。
这有帮助吗?
<br>
将数字分开的标签;它们实际上是您的字符串的一部分吗?