Если у меня есть строка
00020300504
00000234892839
000239074
как я могу избавиться от ведущих нулей, так что у меня будет только это
20300504
234892839
239074
обратите внимание, что число, указанное выше, генерировалось случайным образом.
Если у меня есть строка
00020300504
00000234892839
000239074
как я могу избавиться от ведущих нулей, так что у меня будет только это
20300504
234892839
239074
обратите внимание, что число, указанное выше, генерировалось случайным образом.
$str = ltrim($str, '0');
(string)((int)"00000234892839")
Не знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Wow!
Вот вам, самый простой и простой способ (как описано здесь: 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';
}
вы можете добавить "+" в свою переменную,
пример:
$numString = "0000001123000";
echo +$numString;
Regex был предложен уже, но не правильно:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
вывод тогда:
4523423400023402340240
Справочная информация о регулярном выражении: символ ^
обозначает начало строки, а знак +
указывает на то, что предыдущий знак больше или вообще не указан. Следовательно, регулярное выражение ^0+
соответствует всем нулям в начале строки.
Я не думаю, что 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
Я исправлен таким образом.
это очень просто. только передать строку, удалить нулевое начало строки.
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, не помню где.
Предполагая, что вы хотите удалить три или более нулей, а ваш пример - одна строка:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Вы можете сделать шаблон регулярного выражения подходящим, что вам нужно, если мои предположения не работают.
Эта помощь?