2013-08-28 26 views
3

我期待獲得只有 style屬性和它在php中使用正則表達式的內容。在PHP中使用REGEX選擇樣式屬性

例如

輸入 <img src="test.png" style="float:left;"/>

所需的輸出 style="float:left;"


我已經試過:

這似乎返回整個圖像,我不知道爲什麼。我吮吸正則表達式。

$img = '<img src="test.png" style="float:left;"/>'; 
preg_match('/(<[^>]+) style=".*?"/i', $img, $match); 

返回:

[0] => Array 
    (
     [0] => <img src="test.png" style="float:left;" 
     [1] => <img src="test.png" 
    ) 

任何人只要有任何指針?

乾杯。

+0

'style'屬性?請參閱[正則表達式匹配開放標籤,XHTML自包含標籤除外](http://stackoverflow.com/q/1732348/112968),瞭解正因爲正規交易並不總是正確的工具。 – knittl

+0

是的,我明白,但在這種情況下,我不得不使用正則表達式。 – Greg

+0

你能使用javascript字符串運算符嗎? –

回答

4

你有它幾乎正確,你只需要捕捉你想要的部分,通過將其包圍在括號中。您目前正在拍攝的錯誤部分:

$img = '<img src="test.png" style="float:left;"/>'; 
preg_match('/<[^>]+ (style=".*?")/i', $img, $match); 
$result = $match[1]; 

Demo

注:這將像例如<img>標籤簡單的輸入工作,但任何東西更復雜的正則表達式是沒有強大到足以解析HTML,因爲HTML不是一種常規語言。如果你發現它不夠強大,你可以使用DOMDocument,這是爲了這樣的事情。

+0

輝煌,謝謝! 它的字面意思與我的例子一樣簡單,所以Regex現在可以正常工作。如果我有選擇,我肯定會使用DOMDocument解析。再次感謝! – Greg

相關問題