在早期的 PHP 開發學習中,編寫簡單的採集腳本是理解網路請求、正則表達式與檔案操作的絕佳練習。本文整理自 2007 年的一份經典入門教程,展示如何使用 file_get_contents 搭配正則表達式,從目標頁面抓取圖片並處理分頁邏輯,最後將結果整合輸出或存入 EmpireCMS 等系統二次加工。
getimg()程式的核心在於 getimg($url, $n, $key, $imgqian, $imgbiao, $titlekey) 函數,參數含義如下:
{圖片地址} 佔位符{圖片標題} 佔位符函數流程:
$msg = file_get_contents($url)(.+),組合完整正則preg_match_all 提取所有符合條件的圖片標籤$imgbiao 則補全前綴;否則直接匹配 https://...jpg當 $_POST['getpage'] == '是' 時啟用分頁採集:
{分頁地址} 佔位符{關鍵地址} 佔位符程式會解析首頁分頁連結,逐一訪問並複用 getimg() 累加圖片,實現多頁面聚合採集。
<form method="POST" action="?act=getimgadd">
輸入圖片地址 <input name="url" value="https://www.pp132.com/n835c17.shtml"><br>
圖片地址正則 <input name="key" value="<img{圖片地址}>"><br>
圖片地址前綴 <input name="imgqian" value="https://www.pp132.com/"><br>
圖片地址標識 <input name="imgbiao" value="upload"><br>
圖片標題正則 <input name="titlekey" value="<H1 class=aTitle>{圖片標題}</H1></DIV>"><br>
分頁地址正則 <input name="page" value="<a href=\"{分頁地址}shtml\">.[0-9]"><br>
分頁地址模式 <input name="pagekey" value="https://{關鍵地址}shtml"><br>
<select name="getpage"><option value="是" selected>獲取分頁</option><option value="否">不獲取</option></select><br>
<select name="pc"><option value="1" selected>1頁</option>...<option value="全部">全部</option></select><br>
<select name="showtype"><option value="圖片" selected>顯示圖片</option><option value="文字">顯示網址</option></select><br>
<input type="submit">
</form>
目標頁 https://zy.muwen.com/pic/89/2007/01/01/131721.htm,圖片標籤為 <IMG src="/UpLoad{圖片地址}jpg",需設定 imgqian=https://zy.muwen.com/、imgbiao=UpLoad,分頁相關留空。
目標頁 https://www.6642.com/Disp/9936.htm,圖片已為完整 URL,故 imgqain 留空,imgbiao 仍可設特徵值輔助篩選。
針對華聲論壇(dispbbs2.asp)兩種圖片形式提供現成正則:
upload=jpg{圖片地址}upload,標識 bbsimg]{圖片地址}/img,標識 jpg帖子主題</B>:{圖片標題}</th>若伺服器禁用 file_get_contents,可改用 fopen/fgets 迴圈讀取並 join 組合內容,原始碼中已附註替代寫法。
$_POST 參數拼接 SQL/正則,存在注入風險,實際部署請務必過濾轉義cURL 替代 file_get_contents,支援 Header、Cookie、Timeout 等進階控制DOMDocument 或 Symfony DomCrawlerrobots.txt 與目標站點服務條款,避免法律風險這份腳本雖屬入門級,但完整展示了「抓取 → 正則提取 → 分頁遞迴 → 結果輸出」的經典採集閉環,適合初學者閱讀理解 PHP 網路操作基礎流程。