Essas três seqüências são separadas ou uma sequência com novas linhas separando cada número? Percebi ao editar sua pergunta que você tinha <br>tags separando os números; eles realmente fazem parte da sua string?
Advertência $ str: = '0'. Abordado na minha resposta, com base nesta resposta.
Mike Weir
por que complicar demais as coisas? e mike é $ str + = 0; como explicado aqui: nabtron.com/kiss-code
Nabeel Khan
@ NabeelKhan Isso não responderia à pergunta, que não pede para converter a string em um número inteiro. Veja os comentários na resposta do Svisstack para saber por que essa não é uma solução tão boa.
Loneomeday
@lonesomeday, você deve ler a pergunta com atenção, onde ele menciona: "observe que o número acima foi gerado aleatoriamente". Então, eles estão inteiros já :)
Eu apenas tentei um (int) "00009384783473"(número aleatório) e meu resultado foi 2147483647. Se eu o converter como flutuador, no entanto, ele parece funcionar bem. Strange
JamesHalsall,
O manual diz que "o tamanho de um número inteiro depende da plataforma, embora um valor máximo de cerca de dois bilhões seja o valor usual (são assinados 32 bits)"
llamerr
1
Não é estranho. Os números inteiros em php vão até 2 ^ 31, que é 2147483647. Para números maiores, você terá que usar a solução baseada em string de um dia de solitário.
awm 23/02
1
A conversão para flutuar pode parecer funcionar, mas em algum momento você receberá erros de arredondamento.
awm 23/02
1
que tal a idéia de avaliar cada uma das cadeias usando uma instrução loop, que quando chegar a um dígito (ou cadeia) diferente de zero, obterá o índice desse dígito e eliminará todos os zeros anteriores e ecoará a cadeia que inicia com o primeiro valor diferente de zero ..
Gerald
10
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!
Parece uma solução mais simples, mas não lida com nenhum tamanho de string, como outras respostas. Você está convertendo de uma sequência para um número inteiro e depois volta como uma sequência - mais simples para encurtar a sequência.
Mike Weir
1
Interessante, mas não sei se é a melhor solução com as conversões de tipo.
jonathanbell
1
Por favor, não faça isso ... é por isso que o PHP recebe uma má reputação
Dan F.
9
Semelhante a outra sugestão, exceto que não obliterará o zero real:
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.
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.
<br>
tags separando os números; eles realmente fazem parte da sua string?Respostas:
ltrim
:fonte
fonte
(int) "00009384783473"
(número aleatório) e meu resultado foi 2147483647. Se eu o converter como flutuador, no entanto, ele parece funcionar bem. StrangeNã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/ ):
fonte
Semelhante a outra sugestão, exceto que não obliterará o zero real:
Ou, como foi sugerido (no PHP 5.3), o operador ternário abreviado pode ser usado:
fonte
$str = ltrim($str, '0') ?: '0';
- sem chamada redundante.você pode adicionar "+" na sua variável,
exemplo:
fonte
O Regex já foi proposto, mas não corretamente:
saída é então:
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.fonte
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.
fonte
Estou corrigido dessa maneira.
é muito simples. somente passe uma string e remova o início zero da string.
fonte
Ajay Kumar oferece o eco mais simples + $ numString; Eu uso estes:
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.
fonte
Supondo que você queira remover um ou mais zeros e que seu exemplo seja uma sequência:
Você pode fazer com que o padrão regex se adapte ao que você precisa, se minhas suposições estiverem desativadas.
Isso ajuda?
fonte