從 HTML 字串中擷取每個 <div> 的 id 屬性值與內容文字:
$html = '<div id="biuuu">jb51.net</div><div id="biuuu_2">jb51.net2</div><div id="biuuu_3">jb51.net3</div>';
預期結果:biuuu, biuuu_2, biuuu_3 與 jb51.net, jb51.net2, jb51.net3
<div id="(biuuu)">(jb51.net)</div>
[a-zA-Z0-9_]+ — 英數字與底線[^<>]+ — 非 <、> 字元(避免貪婪匹配跨越標籤)/<div\s+id="([a-zA-Z0-9_]+)">([^<>]+)<\/div>/
\s+:匹配一或多個空白":雙引號需跳脫():捕獲群組<\/div>:結束標籤,斜線需跳脫<?php
$html = '<div id="biuuu">jb51.net</div><div id="biuuu_2">jb51.net2</div><div id="biuuu_3">jb51.net3</div>';
preg_match_all('/<div\s+id="([a-zA-Z0-9_]+)">([^<>]+)<\/div>/', $html, $result);
var_dump($result);
?>
array(3) {
[0]=> array(3) { // 完整匹配
[0]=> "<div id="biuuu">jb51.net</div>"
[1]=> "<div id="biuuu_2">jb51.net2</div>"
[2]=> "<div id="biuuu_3">jb51.net3</div>"
}
[1]=> array(3) { // 第 1 個捕獲群組
[0]=> "biuuu"
[1]=> "biuuu_2"
[2]=> "biuuu_3"
}
[2]=> array(3) { // 第 2 個捕獲群組
[0]=> "jb51.net"
[1]=> "jb51.net2"
[2]=> "jb51.net3"
}
}
() 定義捕獲群組,$result[1]、$result[2] 對應各群組[^<>]+ 排除標籤字元,避免跨標籤匹配preg_match_all 會找出所有不重疊匹配,適合批次擷取var_dump($result) 觀察陣列結構解析複雜 HTML 建議使用 DOMDocument 或 PHP Simple HTML DOM Parser,正則表達式難以處理巢狀結構、屬性順序不固定等情況。