php如何从CSV中删除前导零?

时间:2011-01-14 19:30:45

标签: php

好吧,假设我有一个CSV字符串:01,02,05,10,11,13 ..删除前导零的最简单方法是什么?

5 个答案:

答案 0 :(得分:10)

如果它们都是整数,则将其分解为数组并将其全部转换为整数。

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

答案 1 :(得分:3)

有点低保真,但使用ltrim应该可以解决问题:

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

<击>

或者(并且更准确地说),使用intval如下:

$zeroLess = intval('01');

答案 2 :(得分:2)

您可以将所有数字转换为整数:

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

请务必在foreach中注明&,以便修改实际的列表元素。

答案 3 :(得分:2)

<?
$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可能更快。

答案 4 :(得分:1)

使用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

这样做的好处是你不必把所有文本都变成一个数组,修改它/循环它,然后把它变成文本。