如何使用 PHP 查找模式第一次出现的位置
How to find the position of the first occurrence of a pattern using PHP
我正在尝试找出一种解析电子邮件的方法。
我无法弄清楚如何搜索第一次出现的这种格式的文本
> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:
文本将以 > On
开头并以 wrote:
结尾
On Mar 12, 2015, at 7:47 AM, Mike G wrote:
如何在 PHP 中找到它?
我可以
$msg = strpos($msg, '> On'); // to get the first position
$msg = strstr($msg, '> On', true); // with PHP 5.3+ to get the text prior the first '> On '
但我需要寻找类似的模式线才能更准确。
我试过这段代码:
$matches = '';
$pattern = "/ On*<[a-zA-Z0-9._-]@[a-zA-Z0-9._-]> wrote:/";
preg_match($pattern, $msg, $matches);
$msg = strstr($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];
如果您想要更安全并且还需要 'On'...
preg_match('~>\s+On.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);
我正在尝试找出一种解析电子邮件的方法。
我无法弄清楚如何搜索第一次出现的这种格式的文本
> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:
文本将以 > On
开头并以 wrote:
On Mar 12, 2015, at 7:47 AM, Mike G wrote:
如何在 PHP 中找到它?
我可以
$msg = strpos($msg, '> On'); // to get the first position
$msg = strstr($msg, '> On', true); // with PHP 5.3+ to get the text prior the first '> On '
但我需要寻找类似的模式线才能更准确。
我试过这段代码:
$matches = '';
$pattern = "/ On*<[a-zA-Z0-9._-]@[a-zA-Z0-9._-]> wrote:/";
preg_match($pattern, $msg, $matches);
$msg = strstr($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];
如果您想要更安全并且还需要 'On'...
preg_match('~>\s+On.*?<([^>]*)>\s+wrote:~', '> On Mar 12, 2015, at 7:47 AM, Mike G <email@yourdomain.com> wrote:', $email);