Risposte:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(numero casuale) e il mio risultato è stato 2147483647. Tuttavia, se lo lancio come float, sembra funzionare bene. Strano
Non so perché le persone stiano usando metodi così complessi per ottenere una cosa così semplice! E regex? Wow!
Ecco qui, il modo più semplice e semplice (come spiegato qui: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Simile a un altro suggerimento, tranne che non cancellerà lo zero effettivo:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
O come è stato suggerito (a partire da PHP 5.3), è possibile utilizzare l'operatore sternale stenografico:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- nessuna chiamata di assetto ridondante.
puoi aggiungere "+" nella tua variabile,
esempio :
$numString = "0000001123000";
echo +$numString;
Regex è stato già proposto, ma non correttamente:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
l'output è quindi:
4523423400023402340240
Contesto su Regex: i ^
segnali iniziano la stringa e il +
segno segnala più o nessuno del segno precedente. Pertanto, regex ^0+
corrisponde a tutti gli zeri all'inizio di una stringa.
preg_replace() expects at least 3 parameters, 2 given
Non credo che preg_replace sia la risposta ... vecchio thread, ma capita solo di cercarlo oggi. ltrim e (int) casting sono i vincitori.
<?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
Sono stato risolto in questo modo.
è molto semplice. passa solo una stringa e rimuove zero inizio della stringa.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar offre l' eco più semplice + $ numString; Io uso questi:
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
In realtà qualsiasi funzione matematica prenderà il numero dalla "stringa" e lo tratterà in questo modo. È molto più semplice di qualsiasi regex o funzioni comparative. L'ho visto in php.net, non ricordo dove.
Supponendo di voler rimuovere un run-on di tre o più zeri e il tuo esempio è una stringa:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Puoi fare in modo che il modello regex si adatti a ciò di cui hai bisogno se i miei presupposti sono disattivati.
Questo aiuto?
<br>
tag che separavano i numeri; fanno effettivamente parte della tua stringa?