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

PHP 正則表達式提取超鏈接與標題實戰技巧

     編輯:PHP 綜合知識

問題場景

HTML 結構不規則,需提取所有 <a> 標簽的 href 與鏈接文本。

源 HTML 片段

$str = '<a id="top8" href="https://list.MP3.baidu.com/song/A.htm?top8" class="p14" target="_top">歌曲列表</a><br>
<a target="_blank" id="bp" href="https://list.mp3.baidu.com/list/bangping.html" class="p14">中文金曲榜</a><br>
<td nowrap="nowrap">&#8226;&nbsp;<a id="top19" href="qingyinyue.html?top19" class="p14" target="_top">輕音樂</a></td>';

正則方案

$pat = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i';
preg_match_all($pat, $str, $m);

正則解析

  • <a(.*?):非貪婪匹配標簽屬性
  • href="(.*?)":捕獲組 2 — 鏈接地址
  • (.*?):非貪婪跳過其餘屬性
  • >(.*?)<\/a>:捕獲組 4 — 鏈接文本
  • /i:大小寫不敏感

結果輸出

print_r($m[2]);  // 所有 href
print_r($m[4]);  // 所有鏈接文本

// 或構建列表
for ($i = 0; $i < count($m[2]); $i++) {
    echo '<li><a href="' . $_SERVER['PHP_SELF'] . '?url=' . urlencode($m[2][$i]) . '">' . $m[4][$i] . '</a>';
}

輸出結果

Array(
    [0] => https://list.mp3.baidu.com/song/A.htm?top8
    [1] => https://list.mp3.baidu.com/list/bangping.html
    [2] => qingyinyue.html?top19
)
Array(
    [0] => 歌曲列表
    [1] => 中文金曲榜
    [2] => 輕音樂
)

應用擴展

  • 網頁採集器核心邏輯
  • 站點地圖生成器
  • 死鏈檢測工具
  • 內容遷移腳本

提示:複雜 HTML 解析建議使用 DOMDocument + DOMXPath,正則僅適用於結構相對固定、輕量級提取場景。

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