Как удалить все ведущие нули в строке

Если у меня есть строка

00020300504
00000234892839
000239074

как я могу избавиться от ведущих нулей, так что у меня будет только это

20300504
234892839
239074

обратите внимание, что число, указанное выше, генерировалось случайным образом.

Ответ 1

ltrim:

$str = ltrim($str, '0');

Ответ 2

(string)((int)"00000234892839")

Ответ 3

Не знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Wow!

Вот вам, самый простой и простой способ (как описано здесь: https://nabtron.com/kiss-code/):

$a = '000000000000001';
$a += 0;

echo $a; // will output 1

Ответ 4

Подобно другому предложению, за исключением того, что он не уничтожит фактический нуль:

if (ltrim($str, '0') != '') {
    $str = ltrim($str, '0');
} else {
    $str = '0';
}

Ответ 5

вы можете добавить "+" в свою переменную,

пример:

$numString = "0000001123000";
echo +$numString;

Ответ 6

Regex был предложен уже, но не правильно:

<?php
    $number = '00000004523423400023402340240';
    $withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
    echo $withoutLeadingZeroes;
?>

вывод тогда:

4523423400023402340240

Справочная информация о регулярном выражении: символ ^ обозначает начало строки, а знак + указывает на то, что предыдущий знак больше или вообще не указан. Следовательно, регулярное выражение ^0+ соответствует всем нулям в начале строки.

Ответ 7

Я не думаю, что 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

Ответ 8

Я исправлен таким образом.

это очень просто. только передать строку, удалить нулевое начало строки.

function removeZeroString($str='')
{
    while(trim(substr($str,0,1)) === '0')
    {
        $str = ltrim($str,'0');
    }
    return $str;
}

Ответ 9

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, не помню где.

Ответ 10

Предполагая, что вы хотите удалить три или более нулей, а ваш пример - одна строка:

    $test_str ="0002030050400000234892839000239074";
    $fixed_str = preg_replace('/000+/','',$test_str);

Вы можете сделать шаблон регулярного выражения подходящим, что вам нужно, если мои предположения не работают.

Эта помощь?