2012-04-19 69 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); 

感謝:-)