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

PHP 獲取文章首張圖片的實用代碼示例:支援隨機預設圖

     編輯:PHP 相關知識

PHP 智能獲取文章第一張圖片:無圖自動 fallback 機制

在開發 CMS 或部落格系統時,經常需要提取文章內容中的第一張圖片作為縮略圖。本文提供兩種實用的 PHP 實作方案,滿足不同業務場景需求。

方案一:無圖時隨機顯示預設圖片

<?php
$temp = mt_rand(1, 4);
$pattern = '/<[img|IMG].*?src=[\'|"](.*?(?:\.gif|\.jpg|\.png))[\'|"].*?[\/]?>/';
$content = $article->Content; // 文章內容
preg_match_all($pattern, $content, $matchContent);

if (isset($matchContent[1][0])) {
    $temp = $matchContent[1][0];
} else {
    $temp = "images/random/$temp.jpg"; // 需在對應目錄放置 1~4.jpg
}
?>

邏輯說明:優先提取文章首張圖片;若文章無圖片,則從 style/images/random/ 目錄隨機抽取 1.jpg~4.jpg 作為預設圖。

方案二:無圖時使用固定預設圖片

<?php
$pattern = '/<[img|IMG].*?src=[\'|"](.*?(?:\.gif|\.jpg|\.png))[\'|"].*?[\/]?>/';
$content = $article->Content;
preg_match_all($pattern, $content, $matchContent);

if (isset($matchContent[1][0])) {
    $temp = $matchContent[1][0];
} else {
    $temp = "./images/no-image.jpg"; // 放置單一預設圖
}
?>

適用場景:不想要隨機效果,統一使用 no-image.jpg 作為佔位圖,維護更簡單。

正則表達式解析

  • <[img|IMG]:匹配 img 標籤(不區分大小寫)
  • src=[\'|"]:匹配 src 屬性,支援單雙引號
  • (.*?(?:\.gif|\.jpg|\.png)):非貪婪捕獲圖片 URL,限定常見格式
  • [\/]?>:匹配自閉合或標準閉合標籤

進階建議:實際專案中建議將此邏輯封裝為工具類方法,並加入快取機制避免重複正則解析影響效能。

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