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

PHP 網頁內容擷取實作:正則與字串切割兩種解析函式範例

     編輯:PHP 相關知識

需求背景

撰寫網頁爬蟲或資料采集程式時,常需從 HTML 原始碼中提取標題、作者、正文等區塊。本文提供兩種通用解析函式:正則表達式版與字串分割版。

工具函式定義

<?php
// 正則表達式擷取:$start 與 $end 為正則模式
function preg_substr($start, $end, $str) {
    $temp = preg_split($start, $str);
    $content = preg_split($end, $temp[1]);
    return $content[0];
}

// 字串分割擷取:$start 與 $end 為純字串
function str_substr($start, $end, $str) {
    $temp = explode($start, $str, 2);
    $content = explode($end, $temp[1], 2);
    return $content[0];
}
?>

實際應用範例

<?php
// 取得遠端頁面並轉碼(視目標網站編碼調整)
$url = 'https://example.com/article/123';
$html = iconv('UTF-8', 'GB2312//IGNORE', file_get_contents($url));

// 1. 擷取標題 ...
$title = str_substr('', '', $html);
echo "標題: $title\n";

// 2. 正則擷取作者連結 作者名
$author = preg_substr('/userid=\d+">', '', $html);
echo "作者: $author\n";

// 3. 擷取內容區塊 
...
$content = str_substr('
', '
', $html); echo "內容: $content\n"; ?>

兩種方法比較

特性preg_substr (正則)str_substr (字串分割)
靈活度高(支援複雜模式)低(固定字串)
效能較慢極快
適用場景標籤屬性不固定、需模糊匹配結構固定、明確標記
編碼敏感度需注意模式編碼一致直接比對位元組

進階建議

  • 大型專案建議使用 DOMDocument + XPath 或 QueryList / Symfony DomCrawler 等成熟解析庫,健壯度遠超手工切割。
  • 正則解析 HTML 易因標籤巢狀、屬性順序變動而失效,僅適合簡單、一次性任務。
  • 注意 `file_get_contents` 需開啟 `allow_url_fopen`,或改用 cURL 取得更完整的錯誤控制與標頭模擬。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved