如果我有一個字符串如何刪除所有前導零字符串中的
00020300504
00000234892839
000239074
我怎麼能擺脫前導零的,這樣我纔會有這個
20300504
234892839
239074
注意,上面的數字是隨機產生的。
如果我有一個字符串如何刪除所有前導零字符串中的
00020300504
00000234892839
000239074
我怎麼能擺脫前導零的,這樣我纔會有這個
20300504
234892839
239074
注意,上面的數字是隨機產生的。
$str = ltrim($str, '0');
+1不知道第二個參數,謝謝! – Czechnology 2011-02-23 23:55:23
^_ ^,感謝lonesomeday,這解決了我最多5個小時想到的問題... – Gerald 2011-02-24 00:20:30
你讓我的一天! – Xavier 2014-10-07 11:45:48
(string)((int)"00000234892839")
我剛剛嘗試過一個'(int)「00009384783473」'(隨機數),我的結果是2147483647.但是,如果我把它作爲一個浮點,它似乎工作正常。奇怪的 – JamesHalsall 2011-02-23 23:37:37
手冊說「整數的大小是依賴於平臺的,儘管最大值約爲20億是通常的值(這是32位有符號)」 – llamerr 2011-02-23 23:39:54
並不奇怪。在PHP中的整數上升到2^31,這是2147483647.對於任何更大的數字,你將不得不使用lonesomeday的基於字符串的解決方案。 – awm 2011-02-23 23:41:40
假設你想要三個或者更多零的上運行被刪除,你的例子是一個字符串:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
可以使正則表達式模式如果我的假設是關閉的,就符合你的需要。
This help?
不正確,對不起。這也會從字符串中間減少'000'。 – 2016-11-28 16:10:40
我不認爲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
如果在正則表達式的開頭添加^運算符,它是一個有效的解決方案。 – twicejr 2018-02-13 12:08:41
正則表達式,提出了,但不正確:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', $number)
echo $withoutLeadingZeroes;
?>
輸出是:對正則表達式
4523423400023402340240
背景: 開始字符串的^
信號和+
標誌信號更多或者沒有前面的標誌。因此,正則表達式^0+
匹配字符串開頭的所有零。
另一項建議類似,但不會抹殺實際零:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
不知道爲什麼人都在用這麼複雜的方法來實現這樣一個簡單的事情!和正則表達式?哇!
在這裏,你走了,最簡單,最簡單的方法(如這裏解釋:https://nabtron.com/kiss-code/):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
這似乎是一個更簡單的解決方案,但它不像其他答案那樣處理任何大小的字符串。你從一個字符串轉換爲一個整數,然後作爲一個字符串返回 - 更簡單的僅僅是縮短字符串。 – 2016-10-12 18:41:32
有趣,但我不知道它是否是類型轉換的最佳解決方案。 – jonathanbell 2017-03-02 18:52:20
,你可以在你的變量添加 「+」,
例如:
$numString = "0000001123000";
echo +$numString;
這很簡單,容易 – 2016-11-21 19:37:31
Ajay Kumar提供最簡單的echo + $ 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中,不記得在哪裏。
這三個單獨的字符串,還是一個用新行分隔每個數字的字符串?我在編輯你的問題時注意到你有'
'標籤分隔數字;他們真的是你的字符串的一部分嗎? – erisco 2011-02-23 23:42:09