Jawaban:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(angka acak) dan hasil saya adalah 2147483647. Namun jika saya melemparkannya sebagai pelampung, sepertinya berfungsi dengan baik. Strange
Tidak tahu mengapa orang menggunakan metode yang begitu rumit untuk mencapai hal yang begitu sederhana! Dan regex? Wow!
Ini dia, cara termudah dan paling sederhana (seperti yang dijelaskan di sini: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Mirip dengan saran lain, kecuali tidak akan menghapus nol aktual:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
Atau seperti yang disarankan (pada PHP 5.3), operator ternary steno dapat digunakan:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- tidak ada panggilan trim yang berlebihan.
Anda dapat menambahkan "+" dalam variabel Anda,
contoh:
$numString = "0000001123000";
echo +$numString;
Regex sudah diusulkan, tetapi tidak dengan benar:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
output kemudian:
4523423400023402340240
Latar belakang pada Regex: ^
sinyal awal dari string dan +
sinyal lebih atau tidak sama sekali dari tanda sebelumnya. Oleh karena itu, regex ^0+
cocok dengan semua nol pada awal string.
preg_replace() expects at least 3 parameters, 2 given
Saya tidak berpikir preg_replace adalah jawabannya .. utas lama tetapi kebetulan mencari ini hari ini. Hanya casting dan int adalah pemenangnya.
<?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
Saya Tetap dengan cara ini.
ini sangat sederhana. hanya melewatkan string, hilangkan nol mulai dari string.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar menawarkan gema paling sederhana + $ numString; Saya menggunakan ini:
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
Sebenarnya setiap fungsi matematika akan mengambil nomor dari "string" dan memperlakukannya seperti itu. Ini jauh lebih sederhana daripada fungsi regex atau komparatif. Saya melihat itu di php.net, tidak ingat di mana.
Dengan asumsi Anda ingin run-on dari tiga nol atau lebih dihapus dan contoh Anda adalah satu string:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Anda dapat membuat pola regex sesuai dengan yang Anda butuhkan jika asumsi saya tidak aktif.
Bantuan ini?
<br>
tag yang memisahkan angka-angka; apakah mereka sebenarnya bagian dari tali Anda?