2013-07-25 40 views
0

我想改進我的代碼,但我不知道如何編寫正則表達式。PHP:preg_match_all none xhtml attributes

我想要在標籤中獲取所有非xhtml屬性。

所以預浸比賽後,我想:

array(
    0 => "required", 
    1 => "autocomplete" 
); 

$balise = <input id="myId" class="myClassA myClassB myClassC" required autocomplete/>;

實際上我用這個preg_match_all("/(?<=\s)[\w]+(?=[\s\/>])/i", $balise, $attributs);

但與正則表達式,我得到:

array(
    0 => "myClassB", 
    1 => "required", 
    3 => "autocomplete" 
); 

我不想得到myClassB ...

任何人都可以幫我寫我的正則表達式嗎?

THX

+1

你可以發佈你正在使用正則表達式的原始數據嗎('$ balise')嗎? – Pietu1998

+4

使用解析器解析HTML,而不是正則表達式 – user4035

+0

已編輯。 simplyParseXML是不是完全理解HTML,不? – Jordan

回答

1

您可以添加否定前瞻(?![^=]*?"),以確保接下來的「不先下一=,這樣,你得到只是不帶引號的值之內的話。單 - 引用字符串,以便「在正則表達式中不會終止它。

preg_match_all('/(?<=\s)[\w]+(?=[\s\/>])(?![^=]*?")/i', $balise, $attributs);