2012-07-09 102 views
14

我想用PHP DOMDocument更改標籤屬性的值。用PHP DOMDocument更改標籤屬性值

例如,假設我們有這一行的HTML:

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

我加載上面的代碼在PHP如下:

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

我想改變的 「href」 值「 http://google.com/「使用PHP的DOMDocument擴展。這可能嗎?

感謝您一如既往的幫助!

回答

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

謝謝SOOO了! – apparatix 2012-07-09 00:30:01

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

Upvoted是因爲你包含了一個類型檢查,但是請記住,在類C語言中,總是將一個條件或循環的正文放在花括號中是一個好主意,即使它只有一個語句(因爲如果你以後添加另一種說法,並忘記添加大括號,它會*看起來像它是身體的一部分,當它真的不是這樣的時候;這會導致很難找到的錯誤)。 – ebohlman 2012-07-09 03:52:26

+0

好的。謝謝 – iDexter 2012-07-17 11:20:23

+0

這裏的類型檢查其實沒什麼用處, 'DOMDocument :: getElementsByTagName'總是返回一個'DOMNodeList',所以'if'塊將一直運行。 – cspray 2014-03-17 15:17:06