2011-07-28 54 views
0

我想做一個非常簡單的列表使用空格作爲分隔符爆炸。然而,我對以下字符串有一些問題...通過間距PHP字符串爆炸問題

「+0.59 - + 0.58%」「+0.06 - + 0.14%」「-0.47 - -1.07%」「-0.77 - -0.20%」 //輸入

而這是應該由每個空間分離所得陣列(引號也被除去)

陣列([0] => 0.59 [1] =' - [2] => + 0.58%+0.06 [3] => - [4] => + 0.14%-0.47 [5] => - [6] => -1.07%-0.77 [7] => - [8] => )

基本上空間沒有被正確識別。我已經嘗試通過/ n/r和'/ \ s */m'來分隔它。

這是我的代碼片段。

$open = fopen("http://finance.yahoo.com/d/quotes.csv?s=$ticker&f=c&e=.csv", "r"); 
$quote = fread($open, 2000); 
fclose($open); 
$quote = explode(" ", $quote); 
foreach ($quote as &$value) { 
    $value = str_replace('"',"",$value); 
} 
//print_r($tickerlist); 
print_r($quote); 
+0

'/ n'?你的意思是'\ n'?會發生什麼呢?你確定你打開並正確地讀取文件嗎? – KingCrunch

+1

該服務每行提供1「」封閉數據集,因此使用fgets一次獲取數據將比爆炸更簡單 – fvu

+0

對此錯字感到抱歉,我對反斜線使用了特殊字符串而不是反斜槓。 – jab

回答

2

打開在一個適當的編輯器文件(VIM將是這個漂亮。也許記事本+ +),並檢查tab性格和\r\n

0

這項工作?

$newArr = explode('" "', $quote); 
+0

除非,你的意思是說沒有雙引號作爲分隔符的一部分。你能向我們展示你想要爆炸的確切的字面串嗎?向我們展示該陣列應該如何正確顯示? – notam2774

+0

'$ newArr = explode('「'',substr($ quote,1,-1));' –

0

如果你想轉換數據,你可以簡單地使用這個函數將csv文件解析成一個數組。

function csv2array($string, $separatorChar = ',', $enclosureChar = '"', $newlineChar = "\n") 
{ 
    $array = array(); 
    $size = strlen($string); 
    $columnIndex = 0; 
    $rowIndex = 0; 
    $fieldValue = ""; 
    $isEnclosured = False; 

    for($i=0; $i<$size;$i++) 
    { 
     $char = $string{$i}; 
     $addChar = ""; 

     if($isEnclosured) 
     { 
      if($char == $enclosureChar) 
      { 
       if($i+1<$size && $string{$i+1} == $enclosureChar) 
       { 
        $addChar = $char; 
        $i++; 
       } 
       else 
       { 
        $isEnclosured = false; 
       } 
      } 
      else 
      { 
       $addChar=$char; 
      } 
     } 
     else 
     { 
      if($char==$enclosureChar) 
      { 
       $isEnclosured = true; 
      } 
      else 
      { 
       if($char==$separatorChar) 
       { 
        $array[$rowIndex][$columnIndex] = $fieldValue; 
        $fieldValue = ""; 
        $columnIndex++; 
       } 
       elseif($char==$newlineChar) 
       { 
        //echo $char; 
        $array[$rowIndex][$columnIndex] = $fieldValue; 
        $fieldValue=""; 
        $columnIndex=0; 
        $rowIndex++; 
       } 
       else 
       { 
        $addChar=$char; 
       } 
      } 
     } 

     if($addChar != "") 
     { 
      $fieldValue.=$addChar; 
     } 
    } 

    if($fieldValue) 
    { 
     $array[$rowIndex][$columnIndex] = $fieldValue; 
    } 

    return $array; 
} 

這隻會解析其關聯形式中的所有內容並返回該數組。