2012-05-07 31 views
0

我有被打開和閱讀由PHP,看起來像這樣如何基於文本格式

ABC: 123 

DEF: 456 

GHI: 789 

一個文本文檔輸入文本到一個PHP數組所以基本上它是一個文本塊與結束冒號,然後是另一段文字。爲了分隔線,有一個換行符(即「\ n」)

是否有可能讓這個數組進入由冒號和換行符分隔的數組?所以,當我打印的價值就應該是這樣的:

「ABC:123 DEF:456,GHI:789」你需要做的是建立分類與線

+0

這些是冒號,而不是分號。 – octern

+0

@octern你說得對,對不起。這是一個漫長的一天。 – DonJuma

回答

1

的第一件事。

$lines = explode("\n", $doctext); 

接下來,逐一處理這些行,分出相應的值。

$output = array(); 
foreach ($lines as $line) { 
    $line_parts = explode(': ', $line, 2); // Limit 2, in case data contains a colon 
    $output[$line_parts[0]] = $line_parts[1]; 
} 

然後,你可以在$output找到你的數組。請注意,您還應該爲這些行添加一些驗證,並確保它們包含您期望的數據。此外,如果行可選地包含冒號與值之間的空格或可變數量的空格,則在冒號上拆分並根據該值使用trim()

+0

這正是我需要的,非常感謝你。真正快速,對於'$ line_parts = explode(':',$ line,2);'2到底做了什麼? – DonJuma

+0

我在評論中提到過它,並且在http://php.net/manual/en/function.explode.php的'explode()'文檔中引用它。基本上,它限制了將返回到2的值的數量。假設你在第一個冒號後面還有一個冒號的數據,比如'ABC:Some:text'。如果沒有2,就會失去':text',因爲它將位於索引2處的數組中。其中2將包含在元素1中。如果數據格式良好,則不需要這樣做,但我會包括它,以防萬一。 – Brad

+0

非常感謝你,因爲我確實有一些包含第二個冒號的行。 – DonJuma