PHP 特定字符前后的子字符串,直到 space,逗号...?

PHP substring before and after specific character until space, comma ...?

我正在尝试抓取电子邮件。假设我有一个长字符串:

$str = "this is the email query@whosebug.com which you might want to scrape";
$needle_1 = "@";
$needle_2 = array("[ ]","[,]","["]");

我想提取电子邮件。我假设使用 @ 是解决方案。 所以基本上,我需要获取@之前和之后的所有字符,直到 space、逗号或 ".

目前最好的试用是:

$string = 'this is the email query@whosebug.com which you might want to scrape';
$template = "/[\w]+[@][\w]+[.][\w]+/";
preg_match_all($template, $string, $matches);
var_dump($matches);

我怎样才能做到这一点?

您应该为此创建一个正则表达式:

<?php 
    $str = "this is the email query@whosebug.com which you might want to scrap";
    $pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,4})(?:\.[a-z]{2})?/i';
    preg_match_all($pattern, $str, $matches);
    var_dump($matches[0]);
?>

我觉得更好看

  $string = 'this is the email query@whosebug.com which you might want to scrap';
  $template = "/[\w]+[@][\w]+[.][\w]+/";
  preg_match_all($template, $string, $matches);
  var_dump($matches);