簡體   English   中英

PHP如何從CSV中刪除前導零?

[英]php how to remove leading zeros from a CSV?

好的,假設我有一個CSV字符串:01,02,05,10,11,13 ..刪除前導零的最簡單方法是什么?

如果它們都是整數,則將其展開為數組並將其全部轉換為int。

$values = array_map('intval', explode(',', $csv));

有點低保真,但是使用 ltrim應該可以解決問題:

 
 
 
 
  
  
  $zeroLess = ltrim('01', '0');
 
 
  

另外(並且實質上更正確),使用intval ,如下所示:

$zeroLess = intval('01');

您可以將所有數字轉換為整數:

$list = explode(',', $csv_string);
foreach ($list as &$n) $n = (int)$n;
$fixed = implode(',', $list);

請確保在foreach中注意& ,它可讓您修改實際的列表元素。

<?
$tdata=explode(',','01,02,05,10,11,13');
foreach ($tdata as $number) {
    $csv[]=number_format($number,0);
}
$csv=implode(',',$csv);
echo $csv;

已測試: http : //www.ideone.com/lrh8q

編輯

查看其他一些文章,將其轉換為int而不是number_format可能更快。

為此使用preg_replace

$text = "01,02,05,10,11,13,101"; 
echo preg_replace('/(?<=,|\b)0([0-9])/', "$1", $text);

編輯:更新了正則表達式以使用中間帶有0數字。 (即101)
感謝@BoltClock幫助修復正則表達式。

輸出:

1,2,5,10,11,13,101

這樣做的好處是您不必將所有文本變成一個數組,對其進行修改/循環遍歷,然后將其變回文本就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM