从href链接获取电子邮件地址



如何仅从任何给定href中提取电子邮件地址?

$str = 'mailto:john.doe@outlook.co.uk?subject=hiya';

目前我是这样做的:

$str = str_replace('mailto:', '', $str);
$str = explode('?', $str);
$str = $str[0];

但这是最好的方法吗,它会被抓住吗?

或者,您可以使用parse_url

<?php
$str = 'mailto:john.doe@outlook.co.uk?subject=hiya';
print_r(parse_url($str));
?>
Array
(
[scheme] => mailto
[path] => john.doe@outlook.co.uk
[query] => subject=hiya
)

就个人而言,我会将其设置为可重用的功能,并执行类似于以下内容的操作。

function extract_emails($str){
// This regular expression extracts all emails from a string:
$regexp = '/([a-z0-9_.-])+@(([a-z0-9-])+.)+([a-z0-9]{2,4})+/i';
preg_match_all($regexp, $str, $m);
return isset($m[0]) ? $m[0] : array();
}

例子

'mailto:john.doe@outlook.co.uk?subject=hiya'

返回 [john.doe@outlook.co.uk]

'mailto:john.doe@outlook.co.uk?subject=hiya 我叫乔希,这是一个测试 test@hotmail.co.uk'

返回 ['john.doe@outlook.co.uk', 'test@hotmail.co.uk']

这将从提供的文本中的任何位置提取电子邮件,并且可以处理多个电子邮件提取。所以现在你可以传递一个完整的句子,它会给你一系列的电子邮件。通过这种方式,您得到了理论上完全可重用的东西,如果范围每次增加。

最新更新