Відповіді:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(випадкове число), і мій результат був 2147483647. Якщо я подаю це як плаваючий знак, однак, здається, це нормально. Дивні
Не знаєте, чому люди використовують такі складні методи, щоб досягти такої простої речі! А регекс? Оце Так!
Ось вам, найпростіший і найпростіший спосіб (як пояснено тут: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Подібно до іншої пропозиції, за винятком того, що не знищить фактичний нуль:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
Або, як було запропоновано (станом на PHP 5.3), короткочасний потрійний оператор може бути використаний:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- немає зайвих обрізних викликів.
ви можете додати "+" у змінній,
приклад:
$numString = "0000001123000";
echo +$numString;
Regex вже запропоновано, але не правильно:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
вихід тоді:
4523423400023402340240
Передумови на Regex: ^
сигнали, що починаються з рядка, і +
знак сигналізують більше або жоден попередній знак. Тому регулярний вираз ^0+
відповідає всім нулям на початку рядка.
preg_replace() expects at least 3 parameters, 2 given
Я не думаю, що preg_replace - це відповідь .. стара тема, але просто трапляється шукати це сьогодні. ltrim та (int) кастинг - переможець.
<?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
Я виправлений таким чином.
дуже просто. тільки передайте рядок її видалення нульового початку рядка
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Аджай Кумар пропонує найпростіший ехо + $ numString; Я використовую ці:
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
Насправді будь-яка математична функція буде приймати число з "рядка" і трактувати його так. Це набагато простіше, ніж будь-які регулярні вирази або порівняльні функції. Я це бачив на php.net, не пам'ятаю, де.
Якщо припустити, що ви хочете видалити три або більше нулів, а ваш приклад - одна рядок:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Ви можете зробити шаблон регулярного вираження відповідно до того, що вам потрібно, якщо мої припущення вимкнені.
Ця допомога?
<br>
теги, що розділяють числа; вони насправді є частиною вашої струни?