htmlタグをphpで配列にしたいと考えています。

[code]

     $str = 'abcdefg<span style="font-size:20px;">hijklmnop</span>qrs<span style="font-size:18px;color=F00;">tuv</span>wxyz';
    
[/code]

上記のような文字列をphpを使い以下のようにしたいと考えています。

[code]

    Array([0]=>abcdefg,[1]=><span style="font-size:20px;">hijklmnop</span>,[2]=>qrs,[3]=><span style="font-size:18px;color=F00;">tuv</span>,[4]=>wxyz)
    
[/code]

どのように解決できますでしょうか。




ネストなど考えない簡易的なものであれば、正規表現を使う方法があります。

[code]

    $str = 'abcdefg<span style="font-size:20px;">hijklmnop</span>qrs<span style="font-size:18px;color=F00;">tuv</span>wxyz';
    preg_match_all('/(<[^>]+>[^<]+<\/[^>]+>|[^<]+)/', $str, $matches);
    print_r($matches[1]);
    
[/code]

正規表現の考え方としてですが、

  * <hoge>〜</hoge>の間を取得する
  * <までの範囲まで取得する

こうすると下記のような結果が得られます。

[code]

    Array
    (
        [0] => abcdefg
        [1] => <span style="font-size:20px;">hijklmnop</span>
        [2] => qrs
        [3] => <span style="font-size:18px;color=F00;">tuv</span>
        [4] => wxyz
    )
    
[/code]

