Если у меня есть строка
00020300504 00000234892839 000239074
как я могу избавиться от ведущих нулей, так что у меня будет только это
20300504 234892839 239074
обратите внимание, что число, указанное выше, генерировалось случайным образом.
ltrim
:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
Подобно другому предложению, за исключением того, что не уничтожит фактический ноль:
if (ltrim($str, '0') != '') { $str = ltrim($str, '0'); } else { $str = '0'; }
Не знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Вау!
Здесь вы найдете самый простой и простой способ (как описано здесь: https://nabtron.com/kiss-code/ ):
$a = '000000000000001'; $a += 0; echo $a; // will output 1
вы можете добавить «+» в свою переменную,
пример :
$numString = "0000001123000"; echo +$numString;
Я не думаю, что 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
Regex был предложен уже, но не правильно:
<?php $number = '00000004523423400023402340240'; $withoutLeadingZeroes = preg_replace('/^0+/', $number) echo $withoutLeadingZeroes; ?>
выход:
4523423400023402340240
Справочная информация по регулярному выражению: сигналы ^
начала строки и знак +
сигнализируют больше или ни один из предшествующих знаков. Поэтому regex ^0+
соответствует всем нулям в начале строки.
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);
Вы можете сделать шаблон регулярного выражения подходящим, что вам нужно, если мои предположения не работают.
Эта помощь?