Php 使用正则表达式在字符串中间获取内容

Php 使用正则表达式在字符串中间获取内容,php,regex,string,Php,Regex,String,我有一个字符串,看起来像这样: ааааааааааа, Мы – Добропочта. аааааааааааа ------------------------------ {MESSAGE} ------------------------------ Сжжжжббб,бгб *{MESSAGE}——这里是我需要获取的内容 如果我尝试使用chop()来执行此操作,它会切割比需要更多的字符,如果我使用stru-ireplace,它根本不会替换 我不明白该怎么做才对 $subject

我有一个字符串,看起来像这样:

ааааааааааа, Мы – Добропочта. аааааааааааа ------------------------------

{MESSAGE}

------------------------------


Сжжжжббб,бгб

*
{MESSAGE}
——这里是我需要获取的内容

如果我尝试使用
chop()
来执行此操作,它会切割比需要更多的字符,如果我使用
stru-ireplace
,它根本不会替换 我不明白该怎么做才对

$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数组的连续元素中

{MESSAGE}中的@anubhava可以是任何文本,我尝试通过{MESSAGE}分解它,然后删除字符串的这两部分来匹配它,{MESSAGE}总是由一行破折号后跟一行空行进行,它总是由一行空行后跟一行破折号吗?