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

时间:2018-06-16 11:38:36

标签: php string

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

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

目前我这样做:

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

但这是最好的方式吗?它会被抓出来吗?

2 个答案:

答案 0 :(得分:1)

另外,您可以使用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
)

答案 1 :(得分:0)

我个人认为这是一个可重复使用的功能,并执行类似下面的操作。

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();
}

实施例

  

&#39;至mailto:?john.doe@outlook.co.uk受试者=你好&#39;

     

返回[&#39; john.doe@outlook.co.uk']

     

&#39;至mailto:?john.doe@outlook.co.uk受试者=你好   我的名字是josh,这是一个测试test@hotmail.co.uk'

     

返回[&#39; john.doe@outlook.co.uk' ;,&#39; test@hotmail.co.uk']

这将从提供​​的文本中的任何位置提取电子邮件,并可以处理多个电子邮件摘录。所以现在你可以传递一个完整的句子,它将返回一系列电子邮件。通过这种方式,如果每个范围都增加,那么理论上可以完全重复使用的东西。