所以我在網站上做了一些修改,一切正常。我從頁面返回的結果有一些類似的span標籤:PHP中的正則表達式匹配區域
<span id="content_drptrResults_lblStatus_0">Assigned</span>
實際上有可能會返回5個span標籤。從0-4。我希望能夠在開始和結束跨度標籤之間挖掘出狀態。我似乎無法在SO上找到適合我需要的東西。
所以我在網站上做了一些修改,一切正常。我從頁面返回的結果有一些類似的span標籤:PHP中的正則表達式匹配區域
<span id="content_drptrResults_lblStatus_0">Assigned</span>
實際上有可能會返回5個span標籤。從0-4。我希望能夠在開始和結束跨度標籤之間挖掘出狀態。我似乎無法在SO上找到適合我需要的東西。
請勿使用正則表達式。但是,如果你不得不這樣做,這是遠遠不夠完美的。
如果發生嵌套,它尤其糟糕。
# '/<span(?=\s)[^>]*id\s*=\s*"[^"]*Status_([0-4])[^"]*"[^>]*>([^<>]*)<\/span\s*>/'
<span
(?= \s)
[^>]*
id \s* = \s*
" [^"]*
Status_
([0-4]) # (1)
[^"]*
"
[^>]*
>
([^<>]*) # (2)
</span \s* >
Perl的測試用例
$str = '<span id="content_drptrResults_lblStatus_0">Assigned</span>';
if ($str =~ /<span(?=\s)[^>]*id\s*=\s*"[^"]*Status_([0-4])[^"]*"[^>]*>([^<>]*)<\/span\s*>/)
{
print "Matched '$1' = '$2'\n";
}
輸出>>
Matched '0' = 'Assigned'
也許更好的使用XPath代替正則表達式 – donfuxx
不,不與正則表達式去,用**的DOMDocument * * class,'foreach($ dom-> getElementsByTagName('span')as $ tag){ echo $ tag-> nodeValue; }' –
那麼使用preg_match_all怎麼辦? – MrTechie