Вопрос по dom, php – PHP DOM: парсинг списка HTML в массив?

5

Я хочу, чтобы превратить список HTML в массив,

<code>$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>
';
</code>

Я работаю над методом DOM,

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

print_r($array);
</code>

результат,

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

но я на самом деле ищу такой результат,

<code>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>
)
</code>

Является ли это возможным?

Ваш Ответ

1   ответ
19

Передайте узел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 и выше.

Error: User Rate Limit Exceeded laukok
Error: User Rate Limit Exceeded

Похожие вопросы