首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 正則表達式批量提取網頁郵箱

     編輯:PHP 相關知識

PHP 正則表達式批量提取網頁郵箱

使用 file_get_contents 取得頁面內容,搭配 preg_match_all 與郵箱正則,快速收集公開郵箱地址。

完整程式碼

<?php
$url = 'https://example.com';
$html = file_get_contents($url);

function extractEmails($content) {
    // RFC 5322 簡化版正則,涵蓋常見格式
    $pattern = '/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i';
    preg_match_all($pattern, $content, $matches);
    return array_unique($matches[0]); // 去重
}

$emails = extractEmails($html);
print_r($emails);
?>

正則說明

/                       # 定界符
[a-z0-9._%+-]+          # 本地部:字母數字、點、底線、百分號、加減號
@                       # @ 符號
[a-z0-9.-]+             # 域名:字母數字、點、連字號
\.                      # 點號
[a-z]{2,}               # 頂級域:至少兩字母
/i                      # 不區分大小寫

進階:過濾圖片/JS 內的假陽性

<?php
function extractEmailsClean($html) {
    // 移除 script、style、noscript 區塊
    $html = preg_replace('/<(script|style|noscript)[^>]*>.*?<\/\1>/is', '', $html);
    // 移除 HTML 註解
    $html = preg_replace('//s', '', $html);
    // 提取
    $pattern = '/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i';
    preg_match_all($pattern, $html, $matches);
    return array_unique($matches[0]);
}
?>

法律與道德警示

  • 僅限公開頁面、公開聯絡資訊
  • 嚴禁用於垃圾郵件、釣魚、商業推廣
  • 遵守《個人資料保護法》、GDPR 等相關法規
  • 大量抓取請設定合理間隔,避免對目標伺服器造成壓力
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved