2012-04-19 39 views

回答

0

尝试是这样的(对于PHP < 5.3):

$dst = array(); 
$str = '1,2,3,4,5,"6,000",7,8,9'; 

$state = false; 
$buffer = ''; 
for ($i = 0, $lim = strlen($str); $i < $lim; $i += 1) { 
    $char = $str[$i]; 

    switch ($char) { 
    case ',': 
     if (!$state) { 
     $dst[] = $buffer; 
     $buffer = ''; 
     } 
     break; 

    case '"': 
     $state = !$state; 
     break; 

    default: 
     $buffer .= $char; 
    } 
} 

$dst[] = $buffer; 

print_r($dst); 
+0

这件作品像魔术一样,谢谢耀西。也感谢Satya和KingCrunch。 – naboen 2012-04-19 07:23:17

3

http://php.net/str-getcsv

$items = str_getcsv($str); 
$items = array_map (
    function ($item) { str_replace(',', '', $item); }, 
    $items; 
); 

现在,如果你就像你可以再次合并它们一样

$str = implode(',', $items); 
+0

似乎str_getcsv()函数仅在PHP 5.3.0或更高版本上运行,即时通讯依然采用5.2.6需要升级我的PHP安装第一 – naboen 2012-04-19 07:14:28

+1

是的,你需要。 5.3将近3岁,现在5.4几个星期才出来。 – KingCrunch 2012-04-19 07:20:21

-1
<?php 
$str = '1,2,3,4,5,"6,000",7,8,9'; 
echo $str; 
echo str_replace('"','',$str); 
?> 
+0

输出'1,2,3,4,5,6,000,7,8,9'。不是真的被问到,是吗? – Yoshi 2012-04-19 07:09:11

+0

我这么认为耀西,让我们等待naboen回复 – Satya 2012-04-19 07:10:55

0

使用此:

$str = '1,2,3,4,5,"6,000",7,8,9'; 
$pattern='/"(\d+),(\d+)"/'; 
$replacement='${1}$2'; 

echo preg_replace($pattern, $replacement, $str); 

感谢:-)

相关问题