正则表达式没有在Google搜索结果中找到所有值?

时间:2014-04-16 17:12:21

标签: php regex screen-scraping

首先,我应该强调,我试图在这里学习,不是恶意或垃圾邮件。

我试图通过使用以下代码查找电子邮件地址来了解Google搜索结果中的正则表达式。但是,有时它只能找到一些电子邮件地址,有时则根本不会找到。

如果我尝试使用维基百科网址,那么我就不会有问题。

$url = "https://www.google.com/search?q=hello@hotmail.com";
// $url = "http://en.wikipedia.org/wiki/Email_address"; this works fine
$string = file_get_contents($url);

$matches = array();
$pattern = '/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i';
preg_match_all($pattern,$string,$matches);

foreach ($matches as $row)
{
    foreach ($row as $row2)
    {
        echo $row2."<br>";
    }
}

1 个答案:

答案 0 :(得分:0)

你错过了大写:

'/[A-Za-z\d._%+-]+@[A-Za-z\d.-]+\.[A-Za-z]{2,4}\b/i'

我把它放在任何地方,以防你想要匹配HELLO@GMAIL.COM,你总是可以将它放在一边。

编辑:我想我正在尝试解决此问题,因为其他电子邮件地址并未匹配

编辑2:搜索HTML,那些不工作的人像example<em>@example.com</em>那样强调,所以不会解析。