Yanıtlar:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"(rastgele bir sayı) denedim ve sonuç 2147483647 oldu. Ancak eğer bir şamandıra olarak döküm, tamam çalışıyor gibi görünüyor. Garip
İnsanların bu kadar basit bir şeyi başarmak için neden bu kadar karmaşık yöntemler kullandıklarını bilmiyorum! Ya normal ifade? Vaov!
İşte, en kolay ve en basit yol (burada açıklandığı gibi: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Başka bir öneriye benzer, ancak gerçek sıfatı ortadan kaldırmayacak:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
Veya önerildiği gibi (PHP 5.3'ten itibaren), stenografi üçlü operatör kullanılabilir:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0'; - gereksiz trim çağrısı yok.
değişkeninize "+" ekleyebilirsiniz,
misal :
$numString = "0000001123000";
echo +$numString;
Normal ifade zaten önerilmiş, ancak doğru değil:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
çıktı o zaman:
4523423400023402340240
Regex ile ilgili arka plan: ^ipin başlangıcını ve +işaret, önceki işaretin daha fazlasını veya hiçini işaret etmez. Bu nedenle, normal ^0+ifade bir dizenin başındaki tüm sıfırlarla eşleşir.
preg_replace() expects at least 3 parameters, 2 given
Ben preg_replace cevap .. eski konu olduğunu sanmıyorum ama sadece bugün bu arıyor. ltrim ve (int) oyuncu seçimi kazanır.
<?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
Bu yolla düzeltildim.
çok basit. sadece bir dizeyi onun dizgesini sıfırdan başlatır.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar en basit yankıyı + $ numString'i sunar; Bunları kullanıyorum:
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
Aslında herhangi bir matematik fonksiyonu sayıyı "string" den alır ve ona böyle davranır. Herhangi bir normal ifade veya karşılaştırmalı işlevlerden çok daha basittir. Bunu php.net'te gördüm, nerede olduğunu hatırlamıyorum.
Üç veya daha fazla sıfırın kaldırılmasını istediğinizi ve örneğinizin bir dize olduğunu varsayarsak:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Varsayımlarım kapalı olduğunda normal ifadeyi ihtiyacınız olana uygun hale getirebilirsiniz.
Bu yardım?
<br>sayıları ayıran etiketler olduğunu fark ettim ; aslında ipinizin bir parçası mı?