我有一個字符串,像這樣:串解析幫助
####################
Section One
####################
Data A
Data B
####################
Section Two
####################
Data C
Data D
etc.
我想將它解析爲類似:
$arr(
'Section One' => array('Data A', 'Data B'),
'Section Two' => array('Data C', 'Data D')
)
起初,我嘗試這樣做:
$sections = preg_split("/(\r?\n)(\r?\n)#/", $file_content);
問題是,文件並非完全乾淨:有時段之間有空行數量不同,或數據行之間有空格。
科長模式本身似乎是比較一致:
####################
Section Title
####################
排名的數量,可能是一致的,但我不想指望它。標題行上的空格非常隨意。
一旦我將它分成幾個部分,我認爲它會非常簡單,但是如果你想幫助寫一個殺手reg來獲得它,那麼我們將會很感激。 (或者,如果有比REG前一個更好的辦法...)
太棒了,謝謝!但這並不奏效。 :(它似乎嗆在數據行中的非字母字符,我的所有數據行都有,因爲它們是名稱值對,如「foo.bar = baz」http://ideone.com/u3xYo – sprugman 2010-05-25 14:08:07
@ sprugman,好吧,我不確定數據模式是什麼,但是如果你可以保證它永遠不會包含'#',(例如沒有''C#太棒了!「或類似的東西),那麼就使用' [^#] +'而不是'[\ w \ s] +'http://ideone.com/zrx9n – polygenelubricants 2010-05-25 14:14:23
如果我保證除了分區分隔符之外的任何行都不會以#開頭,怎麼回事? – sprugman 2010-05-25 14:18:06