我有被打開和閱讀由PHP,看起來像這樣如何基於文本格式
ABC: 123
DEF: 456
GHI: 789
一個文本文檔輸入文本到一個PHP數組所以基本上它是一個文本塊與結束冒號,然後是另一段文字。爲了分隔線,有一個換行符(即「\ n」)
是否有可能讓這個數組進入由冒號和換行符分隔的數組?所以,當我打印的價值就應該是這樣的:
「ABC:123 DEF:456,GHI:789」你需要做的是建立分類與線
我有被打開和閱讀由PHP,看起來像這樣如何基於文本格式
ABC: 123
DEF: 456
GHI: 789
一個文本文檔輸入文本到一個PHP數組所以基本上它是一個文本塊與結束冒號,然後是另一段文字。爲了分隔線,有一個換行符(即「\ n」)
是否有可能讓這個數組進入由冒號和換行符分隔的數組?所以,當我打印的價值就應該是這樣的:
「ABC:123 DEF:456,GHI:789」你需要做的是建立分類與線
的第一件事。
$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()
。
這正是我需要的,非常感謝你。真正快速,對於'$ line_parts = explode(':',$ line,2);'2到底做了什麼? – DonJuma
我在評論中提到過它,並且在http://php.net/manual/en/function.explode.php的'explode()'文檔中引用它。基本上,它限制了將返回到2的值的數量。假設你在第一個冒號後面還有一個冒號的數據,比如'ABC:Some:text'。如果沒有2,就會失去':text',因爲它將位於索引2處的數組中。其中2將包含在元素1中。如果數據格式良好,則不需要這樣做,但我會包括它,以防萬一。 – Brad
非常感謝你,因爲我確實有一些包含第二個冒號的行。 – DonJuma
這些是冒號,而不是分號。 – octern
@octern你說得對,對不起。這是一個漫長的一天。 – DonJuma