的「塊」我是應該分析有類似這樣的格式上傳文本文件PHP應用程序:PHP PCRE匹配文本
| | | |
| -----------------------------------------------------|
| Sample | Data | |
| -----------------------------------------------------|
| Sample | Data | |
| -----------------------------------------------------|
| Sample | Data | |
| -----------------------------------------------------|
| Accepts | |
| --------------------------------------------------------|
| All | Yes |
| --------------------------------------------------------|
| More | Yes |
| --------------------------------------------------------|
| | | Years | | |
| ---------------------------------------------------------------|
| 1998 | 1999 | 2000 | 2001 | 2002 |
| ---------------------------------------------------------------|
| 2003 | 2004 | 2005 | 2006 | 2007 |
| ---------------------------------------------------------------|
| 2008 | 2009 | 2010 | 2011 | 2012 |
| ---------------------------------------------------------------|
我需要做的基本上是隔離每個「阻止「自己以相同的順序,所以我可以循環他們一個接一個。 A「解決方案」可以做
preg_split("/\n{4,}/", $text);
但是會產生unwated的結果,如果提交的文本的人決定了不必要的換行不屬於並刪除它們。我嘗試過使用preg_match_all(),但是自從我做了任何真正的正則表達式之後已經有很多年了,所以我無法想出一個可用的解決方案。
「塊」的第一行總是包含|和空格,但字段可能包含文本。 「塊」的最後一行始終是一個管道,後面跟着一個空格,破折號填充行,以|結尾。
我想如果不能可靠地上' '/ \ N {2,} /''或'分裂 '/ \ N(\ S * \ n)的+ /'',則不能可靠地分離的。如果一個「表格」在下一個沒有空行的情況下出現,那麼也可能有兩個連續的表格具有相同的列號和寬度,在這種情況下,它們甚至可能無法被人工區分。 –
如果有可靠的標題行,則可以檢測塊。但是你的樣本太抽象了。 – mario
與標題沒有一致性,有些塊有標題,有些則沒有標題。內容是動態的(不同的集合,語言等),但塊的大小是恆定的。就像在上面的例子中那樣,這是確切的「預期」輸入。 –