Jam*_*mes 14 php regex laravel slack-api laravel-5.3
我目前正在使用Laravel构建Slack机器人,其中一个功能是它可以接收电子邮件地址并向其发送消息.
问题是电子邮件地址(例如bob@example.com)<mailto:bob@example.com|bob@example.com>来自Slack.
我目前有一个函数可以从中检索电子邮件:
public function getEmail($string)
{
$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $string, $matches);
$matches = array_filter($matches);
return $matches[0][0];
}
Run Code Online (Sandbox Code Playgroud)
这似乎与电子邮件地址一样正常工作bob@example.com,但是在使用电子邮件地址时似乎失败了bob.jones@example.com(<mailto:bob.jones@example.com|bob.jones@example.com>在这种情况下,函数将jones@example.com作为电子邮件地址返回.)
我对正则表达式不是很好,但是我可以使用/改变我的模式,还是从Slack提供的字符串中获取电子邮件地址的更好方法?
bcm*_*cfc 10
如果您知道它始终是它的格式,那么总是可以将正则表达式从等式中取出:
$testString = '<mailto:bob@example.com|bob@example.com>';
$testString = str_replace(['<mailto:', '>'], '', $testString);
$addresses = explode('|', $testString);
echo $addresses[0];
Run Code Online (Sandbox Code Playgroud)