2012-07-09 64 views
14

Tôi muốn thay đổi giá trị của thuộc tính của thẻ bằng PHP DOMDocument.Thay đổi giá trị thuộc tính thẻ bằng PHP DOMDocument

Ví dụ, nói rằng chúng ta có dòng này của HTML:

<a href="http://foo.bar/">Click here</a> 

tôi nạp mã trên trong PHP như sau:

$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

Tôi muốn thay đổi giá trị "href" thành " http://google.com/ "bằng cách sử dụng phần mở rộng DOMDocument của PHP. Điều này có thể không?

Cảm ơn sự giúp đỡ như mọi khi!

Trả lời

21
$dom = new DOMDocument(); 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

foreach ($dom->getElementsByTagName('a') as $item) { 

    $item->setAttribute('href', 'http://google.com/'); 
    echo $dom->saveHTML(); 
    exit; 
} 
+0

Cảm ơn rất nhiều! – apparatix

4
$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

$elements = $dom->getElementsByTagName('a'); 

if($elements instanceof DOMNodeList) 
    foreach($elements as $domElement) 
     $domElement->setAttribute('href', 'http://www.google.com/'); 
+1

Được bình chọn bởi vì bạn đã bao gồm kiểm tra kiểu, nhưng hãy nhớ rằng trong ngôn ngữ C, bạn nên luôn * kèm theo phần thân hoặc vòng lặp trong dấu ngoặc nhọn, ngay cả khi chỉ có một câu lệnh (vì sau này bạn thêm một tuyên bố khác và quên thêm niềng răng, nó sẽ * trông * giống như là một phần của cơ thể khi nó thực sự không có, điều này có thể gây ra các lỗi thực sự khó tìm). – ebohlman

+0

OK. Cảm ơn bạn – iDexter

+0

Loại kiểm tra thực sự là khá vô dụng ở đây; 'DOMDocument :: getElementsByTagName' luôn trả về một' DOMNodeList' để khối 'if' sẽ luôn chạy. – cspray

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