如何使用PHP查找模式第一次出现的位置

如何使用PHP查找模式第一次出现的位置,php,regex,preg-match,Php,Regex,Preg Match,我正试图找到一种解析电子邮件的方法 我一直在试图找出如何搜索这种格式的文本的第一次出现 > On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote: 但我需要寻找一个类似的模式线,以更准确 我尝试了以下代码: $matches = ''; $pattern = "/ On*<[a-zA-Z0-9._-]@[a-zA-Z0-9._-]> wrote:/"; preg_match($patte

我正试图找到一种解析电子邮件的方法

我一直在试图找出如何搜索这种格式的文本的第一次出现

> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:
但我需要寻找一个类似的模式线,以更准确

我尝试了以下代码:

$matches = '';
$pattern = "/ On*<[a-zA-Z0-9._-]@[a-zA-Z0-9._-]> wrote:/";

preg_match($pattern, $msg, $matches);
$msg = strstr($msg, $matches, true);
$matches='';
$pattern=“/On*写入:/”;
预匹配($pattern,$msg,$matches);
$msg=strstrstr($msg$matches,true);

但是我没有在文本中找到任何结果。

我认为这应该可以做到。如果空白是可选的,请将
s+
更改为
s*

preg_match('~>\s+.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);
echo $email[1];
preg_match('~>\s+.*.]*)>\s+写了:~','>2015年3月12日上午7:47,Mike G写了:',$email);
echo$电子邮件[1];
如果你想更安全,还需要“打开”按钮

preg_match('~>\s+On.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);
preg_match('~>\s+On.*?]*)>\s+写:~','>2015年3月12日上午7:47,迈克G写:',$email);

您缺少分隔符!选择一个:
~
/
@Rizier123我更新了我的问题。你能看看我现在的代码,看看我做错了什么吗?非常感谢Chris,就是这样。您能帮我理解这个表达式的意思吗?这样我就知道如何在需要时更改它了。
\s+
表示“一个或多个空格字符”。
*?
表示“在下一个字符之前查找所有内容”,在本例中,a
]
表示“字符可以是除
'符号以外的任何内容,
*
表示“在
之前的任何字符数”。
preg_match('~>\s+On.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);