2012-04-25 135 views
0

我有這種形式的字符串與HTML實體將字符串轉換爲數組:以相同的順序

<strong>dsds </strong><em>sdqsd </em><span style='text-decoration: underline;'>test</span> 

,我希望把它放在一個關聯數組:

array('strong' => 'dsds' , 'em' => 'sdqsd' , 'underline' => 'test'); 

在這種數組中元素的順序必須與它們在字符串中的順序相同。

這意味着如果我有,例如:

<span style='text-decoration: underline;'>test</span><strong>dsds </strong><em>sdqsd </em> 

我得到:

array('underline' => 'test', 'strong' => 'dsds' , 'em' => 'sdqsd'); 

我試圖通過在循環中使用strpos這樣做,但,這是一個很大的迭代specialy如果我有一個大字符串,所以有更簡單的方法使用正則表達式?

謝謝。

+1

你的問題不清楚你想去多深。有什麼預期的結果:'abc def'? RegEx不適合這種情況,您需要使用HTML解析器。 – 2012-04-25 13:22:17

+0

這絕對屬於用正則表達式解析HTML的保護傘,正如我們都知道的(必須鏈接)[你不應該](http://stackoverflow.com/questions/1732348)... – DaveRandom 2012-04-25 13:26:43

+0

感謝您的建議,我會嘗試php的DOMDocument,但我仍然會在維護訂單時遇到問題 – 2012-04-25 13:28:11

回答

1

1,只有在每個解析的HTML語句只有一種類型的每種類型的情況下,纔可以將標籤名稱用作數組索引。

2,也許這個庫將幫助:http://simplehtmldom.sourceforge.net/

3或使用正則表達式創建自定義分析器。這是我真正不會建議的解決方案,因爲CPU性能要求很高。