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

PHP 正則表達式提取文章中的圖片與連結地址實戰

     編輯:PHP 相關知識

應用場景

在 CMS 系統、內容抓取或編輯器過濾中,常需要從富文本內容中批量提取所有 <img> 的 src 屬性與 <a> 的 href 屬性。本文示範如何使用 PHP 正則表達式高效完成此任務。

核心程式碼範例

<?php
// 範例內容
$body = '<img src="Image/2009112422220515.gif" alt="樓盤網loupan" border="0" />';
$link = 'fdas<a href="https://www.bkjia.com" target="_blank">網頁制作教程</a>';

// 提取圖片路徑(支援 gif/jpg/jpeg/png/bmp)
preg_match_all('/(src|SRC)=["|\'| ]{0,}(Image\/([^"\']+\.(gif|jpg|jpeg|png|bmp)))/isU', $body, $imgArray);

// 提取超連結地址
preg_match_all('/<a(.*?)href=["\'](.*?)["\']/i', $link, $linkArray);

// 輸出結果
echo "圖片路徑: " . $imgArray[2][0] . "<hr/>";
echo "連結地址: " . $linkArray[2][0];
?>

正則表達式詳解

模式說明
/isUi不區分大小寫、s讓 . 匹配換行、U非貪婪模式
(src|SRC)匹配 src 屬性,兼容大小寫
["|\'| ]{0,}匹配等號後可能的引號或空格
Image\/([^"\']+\.(gif|jpg|jpeg|png|bmp))捕獲 Image 目錄下的圖片檔名
<a(.*?)href=["\'](.*?)["\']非貪婪匹配 a 標籤的 href 值

進階建議

  • 實際專案建議使用 DOMDocument 解析 HTML,比正則更健壯,能應對屬性順序變化、巢狀標籤等複雜情況。
  • 若必須用正則,請針對實際輸出的 HTML 結構調整模式,並加入單元測試。
  • 注意 XSS 風險:提取後的 URL 應經過過濾驗證才能重新輸出。

結語

正則表達式雖強大,但在處理不規範 HTML 時易出錯。掌握 preg_match_all 的捕獲群組用法,配合 DOMDocument 才是專業開發者的正確選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved