<?php
//Store your html into $html variable.
$html="
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<a href='http://example.com'>Example</a><br>
<a href='http://google.com'>Google</a><br>
<a href='http://www.yahoo.com'>Yahoo</a><br>
</body>
</html>";
$dom = new DOMDocument();
$dom->loadHTML($html);
//Evaluate Anchor tag in HTML
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
//remove and set target attribute
$href->removeAttribute('target');
$href->setAttribute("target", "_blank");
$newURL=$url."/newurl";
//remove and set href attribute
$href->removeAttribute('href');
$href->setAttribute("href", $newURL);
}
// save html
$html=$dom->saveHTML();
echo $html;
?>
DOMElement::setAttribute
(PHP 5)
DOMElement::setAttribute — Yeni bir öznitelik ekler
Açıklama
İsmi ve değeri belirtilen özniteliği tanımlar. Öznitelik düğümde mevcut değilse oluşturulur.
Değiştirgeler
-
isim -
Özniteliğin ismi.
-
değer -
Özniteliğin değeri.
Dönen Değerler
Bir hata durumunda FALSE, aksi takdirde yeni bir
DOMAttr nesnesi döner.
Hatalar/İstisnalar
-
DOM_NO_MODIFICATION_ALLOWED_ERR -
Düğüm salt okunur ise oluşur.
Örnekler
Örnek 1 - Bir özniteliğin atanması
<?php
$doc = new DOMDocument("1.0");
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("align", "left");
?>
Ayrıca Bakınız
- DOMElement::hasAttribute() - İsmi belirtilen öznitelik mevcut mu diye bakar
- DOMElement::getAttribute() - İsmi belirtilen özniteliğin değerini döndürür
- DOMElement::removeAttribute() - İsmi belirtilen özniteliği siler
Rakesh Verma - rakeshnsony at gmail dot com
10-Nov-2010 11:27
address at gmail dot com
03-Jul-2008 07:25
If wanting to set an attribute of an element with unique id of "1"
<?php
$dom = new DomDocument();
$dom->load('test.xml');
$xp = new DomXPath($dom);
$res = $xp->query("//*[@id = '1']");
$res->item(0)->setAttribute('title','2');
$dom->save('test.xml');
?>
Vasil Rangelov
31-Jul-2007 04:44
@karvjorm,
Using this method is not exactly a good practice. Infact, I think it may be a bug.
Names beginning with "xml" are reserved (for namespaces in this case).
setAttribute() should return false in this case I think, but I suppose it doesn't.
Still, the right way to do it is with createElementNS().
It lets you specify the namespace when creating the element node.
So the equivalent to yours ($html added to allow word wrapping) is:
$dom = new DomDocument('1.0','iso-8859-15');
$html = $dom->createElementNS('http://www.w3.org/1999/xhtml', 'html');
$ht_ml = $dom->appendChild($html);
$ht_ml->setAttribute('xml:lang','fi');
$ht_ml->setAttribute('lang','fi');
karvjorm at users.sourceforge.net
02-Mar-2007 03:05
$dom = new DomDocument('1.0','iso-8859-15');
$ht_ml = $dom->appendChild($dom->createElement('html'));
$ht_ml->setAttribute('xmlns','http://www.w3.org/1999/xhtml');
$ht_ml->setAttribute('xml:lang','fi');
$ht_ml->setAttribute('lang','fi');
Result:
<?xml version="1.0" encoding="iso-8859-15"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi">
