I am not good with regular expressions, but I wouldn't read the file line by line. The reason being, if it is an HTML page, the address could be split across 2 lines and still be a valid address, but it will not match in the regualar expression, because only part of the address appears on a line.
someone@
adomain.com
That will show on a page as a valid email, but the regular expression will not catch it, because it is split across 2 lines.
I would use someting like
$File = file("url");
$fileStr = implode('',$File);
Then run the regular expression on $fileStr. I won't guarentee this is any better, just the way I would try it.
Also, I believe when using the Array to catch the matches, it may not give you exactly what you expect.
$example_string = "To all who are concerned about anything";
eregi('a',$example_string,$matches)
I believe this would result in:
$matches[0] == "all who are concerned about anything"
$matches[1] == "are concerned about anything"
$matches[2] == "about anything"
$matches[3] == "anything"
Which is probaly not quite what you would expect.
I realize this does not solve your problem, but it may help to move your thinking in the right direction.