2012-04-28 35 views
5

Tôi muốn biến một danh sách html vào một mảng,PHP DOM: phân tích cú pháp một danh sách HTML thành một mảng?

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

tôi đang làm việc trên phương pháp DOM,

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

print_r($array); 

kết quả,

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

nhưng tôi đang tìm kiếm các kết quả như thế này,

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

là nó có thể?

Trả lời

19

Vượt qua nút để DOMDocument::saveHTML để có được đại diện HTML của nó:

$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); 

Kết quả:

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

Chỉ làm việc với PHP 5.3.6 và cao hơn, bằng cách này.

+0

Cảm ơn bạn rất nhiều vì câu trả lời! – laukok

+0

đẹp, không biết về thông số nút mới. – goat

Các vấn đề liên quan