2012-10-01 51 views
2

我有一個mysql場這樣的數據:PHP的preg_match直至雙線突破

First text text text text 
text text text text 
text text text text text text 
text text text text text text 

Second text text text text 
text text text text 
text text text text text text 
text text text text text text 

我試圖從浸漬料的第一個字匹配,直至雙線突破。我已經試過:

preg_match('/First(.*)\n\n/', $mysqlrow, $m); 

這不返回行。我也嘗試了ms修飾符,它們不返回正確的字符串。我也試過\r\n,它不返回任何東西。

你怎麼做這個

+0

_Including_第一個單詞?直到_包括_雙重換行符?它會永遠只是_word_還是會有數字或其他字符? – Sepster

+0

你試過'preg_split(「/ \ r?\ n /」,$ mysqlrow)'? –

回答

6

您需要s修改,你也需要改變你的通配符量詞是非貪婪:

preg_match('/First(.*?)\n\n/s', $mysqlrow, $m); 

s選項將導致.通配符匹配\n而非貪婪將導致*通配符在匹配\n\n之前不會吃掉它所運行的所有\n\n

您還可以選擇匹配\r以防萬一你有你的數據庫:

preg_match('/First(.*?)\r?\n\r?\n/s', $mysqlrow, $m); 
2

這是你所需要的其他標誌。標誌「s」允許點捕捉換行符。但它會吃掉你的雙倍'\ n'。

你可以試試:

preg_match('/First(.*?)\n\n/s', $mysqlrow, $m); 

用?反轉貪婪的行爲。請注意,可以使用可能更適合您的情況的拆分功能來拆分字符串。