2009-05-26 178 views
0

我在這篇文章中有以下正則表達式(Regular expression for extracting tag attributes)。如何用一個正則表達式選擇標籤名稱和屬性以及這些屬性的值?

(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']? 

我創建了下面的PHP代碼,它很好地工作。我從preg_match_all()函數獲取[id ='gridview1'和'id'和'gridview1']。

$regexp = '/(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?/'; 
$text = '<asp:gridview id=\'gridview1\' />'; 

$matches = null; 
preg_match_all($regexp, $text, $matches); 

print_r($matches); 

應該如何正則表達式來改變也返回「ASP」和「gridview的」?(或 '富' 和 '酒吧' 當我使用:

<富:酒吧/ >

+1

您是否考慮過使用SimpleXML代替正則表達式? – 2009-05-26 23:45:27

+1

「有些人遇到問題時會想,」我知道,我會用正則表達式。「現在他們有兩個問題。」如果您需要做的不僅僅是最基本的HTML分析,請使用XML解析器。 – 2009-05-27 00:34:03

回答

1

([a-zA-Z]+)\:([a-zA-Z]+)將工作像富:酒吧

<.*?([a-zA-Z])+.*?\:.*?([a-zA-Z])+.*?\/>會工作對於< Foo:BArrr />

事情可以根據您的要求和whe你知道某種類型的格式化是強制執行的。

相關問題