2012-04-25 28 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な繰り返しの多くのIは、例えば持っている場合を意味

大きな文字列、正規表現を使用して簡単な方法はありますか?

ありがとうございました。

+1

あなたが行きたいと思う深さについてのあなたの質問は明確ではありません。 'abc def'の期待される結果は? RegExはこれには適していません。代わりにHTMLパーサが必要です。 –

+0

これは間違いなく、私たちすべてが知っているように(義務的なリンク)[あなたはすべきではありません](http://stackoverflow.com/questions/1732348)正規表現でHTMLを解析する傘の下にあります... – DaveRandom

+0

提案、私はPHPのDOMDocumentしようとしますが、私はまだ順序を維持することに問題があります –

答えて

1

1、タグ名は、解析されたHTML文ごとにそれぞれの型が1つだけの場合にのみ配列インデックスとして使用できます。 http://simplehtmldom.sourceforge.net/

3を、または正規表現を使用してカスタムパーサーを作成します。

2、たぶん、このライブラリが役立ちます。それは大きなCPU性能要件のために私が本当に示唆していない解決策です。

関連する問題