从php中的电子邮件地址抓取网站

时间:2012-05-31 15:57:00

标签: php mysql

如何从php / mysql中的电子邮件地址中提取网站名称。 爆炸在这里太贵了,因为我必须在db

中为数千个数据做这件事
original data
test@example.com
test@example1.com

needed data
example.com
example1.com

6 个答案:

答案 0 :(得分:3)

function getDomain( $email ) {
    return substr( $email, strpos( $email, '@' ) + 1 );
}

$website = getDomain( 'test@example.com' );

答案 1 :(得分:1)

使用strrpos查找@的索引,然后使用substr对其余部分进行子串。

$atpos = strrpos($eaddress, '@');
$domain = substr($eaddress, $atpos + 1);

答案 2 :(得分:1)

使用strpos查找@substr以获取其后的部分。

答案 3 :(得分:1)

foreach(... as $email) {
  $domains[] = substr($email, strpos('@', $email) + 1);
}

这应该很好用 - 请注意,strpos没有验证返回false,表示该行不包含@符号。

答案 4 :(得分:1)

如果您在数据库中有很长的电子邮件列表,那么最好从数据库而不是在Web服务器上修剪网站查询应该是

SELECT SUBSTRING_INDEX(email_field, '@', -1) FROM email_table;

因为 -1 右侧字符串将在首次出现 @ 后返回

希望有助于

答案 5 :(得分:0)

只是为了一点点不同:preg_match域名捕获:

<?php
  $address = array("test@example.com","test@example.co.uk","test2@ez.example.com");
  foreach ($address as $email) {
   preg_match(";\b.+@([a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,}))\b;", $email,$matches);
   echo $matches[1];
   echo "\n";
  }
?>

输出:

example.com
example.co.uk
ez.example.com