linus' expression should work, especially if, as your latest post implies, you expect more than one address per string and you use a function that returns an array.
Just for interest, if you do expect only one address in the string, this will hyperlink it:
$str = $your_latest_example;
$addr = extract_address($str);
echo '<a href="mailto:' . $addr . '">Email me: ' . $addr . '</a>';
function extract_address($string)
{
$last = strstr($string, '@');
$first = str_replace($last, '', $string);
$drop = strstr($last, ' ');
$domain = str_replace($drop, '', $last);
$user = strrchr($first, ' ');
$address = trim($user . $domain);
return $address;
}
Or, a perlish-one-liner version:
$s = $your_latest_example;
$s='<a href="mailto:'.($a=trim(strrchr(str_replace(strstr($s,'@'),'',$s),' ').str_replace(strstr(strstr($s,'@'),' '),'',strstr($s,'@')))).'">Email me: '.$a.'</a>';