Respostas:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(número aleatório) e meu resultado foi 2147483647. Se eu o converter como flutuador, no entanto, ele parece funcionar bem. Strange
Não sei por que as pessoas estão usando métodos tão complexos para conseguir uma coisa tão simples! E regex? Uau!
Aqui está, a maneira mais fácil e simples (como explicado aqui: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Semelhante a outra sugestão, exceto que não obliterará o zero real:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
Ou, como foi sugerido (no PHP 5.3), o operador ternário abreviado pode ser usado:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- sem chamada redundante.
você pode adicionar "+" na sua variável,
exemplo:
$numString = "0000001123000";
echo +$numString;
O Regex já foi proposto, mas não corretamente:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
saída é então:
4523423400023402340240
Antecedentes do Regex: o ^
início dos sinais da string e o +
sinal indicam mais ou nenhum sinal anterior. Portanto, a regex ^0+
corresponde a todos os zeros no início de uma sequência.
preg_replace() expects at least 3 parameters, 2 given
Eu não acho que preg_replace é a resposta .. thread antigo, mas apenas por procurar isso hoje. ltrim e (int) casting são os vencedores.
<?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
Estou corrigido dessa maneira.
é muito simples. somente passe uma string e remova o início zero da string.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar oferece o eco mais simples + $ numString; Eu uso estes:
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
Na verdade, qualquer função matemática pega o número da "string" e o trata assim. É muito mais simples do que qualquer função regular ou comparativa. Vi isso no php.net, não lembro onde.
Supondo que você queira remover um ou mais zeros e que seu exemplo seja uma sequência:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Você pode fazer com que o padrão regex se adapte ao que você precisa, se minhas suposições estiverem desativadas.
Isso ajuda?
<br>
tags separando os números; eles realmente fazem parte da sua string?