好吧,假设我有一个CSV字符串:01,02,05,10,11,13 ..删除前导零的最简单方法是什么?
答案 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
这样做的好处是你不必把所有文本都变成一个数组,修改它/循环它,然后把它变成文本。