我有这样的文字:
<Neednt@email.com> If you do so, please include this problem report. <Anotherneednt@email.com> You can delete your
自己的 来自附加的返回消息的文本。
The mail system <Some@Mail.net>: connect to *.net[82.*.86.*]: Connection timed out
我必须解析它的电子邮件。你能帮我解决这个问题吗?
UPD
&lt;%here%&gt; 中可能还有其他电子邮件地址。 “邮件系统”文本之间应该有联系。我需要在电子邮件中找到该文本。
答案 0 :(得分:3)
考虑到这个文本存储在$ text中,那么:
$matches = array();
if (preg_match('/<([^>]+)>/', $text, $matches)) {
var_dump($matches[1]);
}
这给了我:
string 'Some@Mail.net' (length=13)
基本上,我使用了一个非常简单的正则表达式,匹配:
<
字符>
字符的内容:[^>]
[^>]+
([^>]+)
>
字符因此,它捕获了<
和>
之间的任何内容。
评论后编辑+编辑OP:
如果您只想要邮件系统之后的电子邮件地址,您可以使用:
$matches = array();
if (preg_match('/The mail system\s*<([^>]+)>/', $text, $matches)) {
var_dump($matches[1]);
}
除了我之前发布的内容之外,还需要:
The mail system
\s*
答案 1 :(得分:2)
您想使用preg_match()
并查看此输入应该很简单:
<?php
if (preg_match('/<([^>]*?@[^>]*>/', $data, $matches)) {
var_dump($matches); // specifically look at $matches[1]
}
还有其他模式可以与之匹配,您不必坚持使用相同的模式。 '&lt;'和'&gt;'在您的输入中有帮助。