2015-12-21 140 views
-2

我有串字符串,它看起來像這樣的中間獲取內容:使用正則表達式

歡迎 我們 - Dobropochta。對於你有一封匿名信:
------------------------------

{文}
 
------------------------------
Dobropochta不是用於發送的信息,
Dobropochta不創建這些消息負責。真誠,善良。

* {MESSAGE} - 這裏是我需要得到

如果我想使用這個它chop()削減比需要更多的字符,如果我用str_ireplace做內容,它不是在更換所有 我不明白如何使這項權利

+0

@anubhava可以是任何文字,我已經嘗試過通過通過{文}爆炸,然後去除串的這兩個部分 –

+1

使preg_split(與之相匹配的「 - +」 ... – splash58

+0

@ splash58感謝 –

回答

1
$subject = "------------------------------\n\nMessage\nmessage line2\n\n------------------------------"; 
$pattern = '/(?s)-{30}\n\n(.*?)\n\n-{30}/'; 
preg_match($pattern, $subject, $matches); 
print_r($matches[1]); 

替換$subject與您的字符串。
$matches[1]將包含您的消息。
我假設總有整整30破折號

說明: (.*?)創建一個組。你輸入字符串的該組相匹配的內容可以在$matches[1]訪問。如果您有多個組,則它們將位於$ matches數組的連續元素中。在{文}