8

以下の HTML 文字列があり、それを配列に変換したいと考えています。

$string = '
<a href="#" class="something">1</a>
<a href="#" class="something">2</a>
<a href="#" class="something">3</a>
<a href="#" class="something">4</a>
';

これが私の現在のコードですDOMDocument

$dom = new DOMDocument;
$dom->loadHTML($string);
foreach( $dom->getElementsByTagName('a') as $node)
{
    $array[] = $node->nodeValue; 
}

print_r($array);

ただし、これにより以下の出力が得られます。

Array ( [0] => 1 [1] => 2 [2] => 2 [3] => 4)

しかし、私はこの結果を探しています:

Array ( 
[0] => <a href="#" class="something">1</a>
[1] => <a href="#" class="something">2</a> 
[2] => <a href="#" class="something">3</a>
[3] => <a href="#" class="something">4</a>
)

これは可能ですか?

4

1 に答える 1

26

ノードを に渡して、DOMDocument::saveHTMLその HTML 表現を取得します。

$string = '
<a href="#" class="something">1</a>
<a href="#" class="something">2</a>
<a href="#" class="something">3</a>
<a href="#" class="something">4</a>
';

$dom = new DOMDocument;
$dom->loadHTML($string);
foreach($dom->getElementsByTagName('a') as $node)
{
    $array[] = $dom->saveHTML($node);
}

print_r($array);

結果:

Array
(
    [0] => <a href="#" class="something">1</a>
    [1] => <a href="#" class="something">2</a>
    [2] => <a href="#" class="something">3</a>
    [3] => <a href="#" class="something">4</a>
)

ちなみに、PHP 5.3.6 以降でのみ動作します。

于 2012-04-28T18:45:49.800 に答える