PHP 5.4.31 Released

DOMElement::setAttribute

(PHP 5)

DOMElement::setAttributeAñade un nuevo atributo

Descripción

public DOMAttr DOMElement::setAttribute ( string $name , string $value )

Establece un atributo con nombre name al valor dado. Si el atributo no existe, se creará.

Parámetros

name

El nombre del atributo.

value

El valor del atributo.

Valores devueltos

El nuevo objeto DOMAttr o FALSE si ocurrió un error.

Errores/Excepciones

DOM_NO_MODIFICATION_ALLOWED_ERR

Lanzado si el nodo es de sólo lectura.

Ejemplos

Ejemplo #1 Establecer un atributo

<?php
$doc 
= new DOMDocument("1.0");
$node $doc->createElement("para");
$newnode $doc->appendChild($node);
$newnode->setAttribute("align""left");
?>

Ver también

add a note add a note

User Contributed Notes 5 notes

up
4
Rakesh Verma - rakeshnsony at gmail dot com
3 years ago
<?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;

?>
up
0
address at gmail dot com
6 years ago
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');
?>
up
-1
Vasil Rangelov
6 years ago
@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');
up
-1
karvjorm at users.sourceforge.net
7 years ago
$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">
up
-1
lehal2@hotmail
1 year ago
The use of Dom to first remove and then add the width and height to the first img tag from the text.I hope it help you to save your time
<?php
$html
= '

            <img src="http://www.example.com/images/header.jpg" width="898" height="223" style="border-bottom:5px solid #cccccc;"/>
        <img src="http://www.example.com/images/header2.jpg" width="898" height="223" style="border-bottom:5px solid #cccccc;"/>
        '
;

$doc = DOMDocument::loadHTML($html);
$c =0;
foreach(
$doc->getElementsByTagName('img') as $image){
    if (
$c>0) continue;
    foreach(array(
'width', 'height') as $attribute_to_remove){
        echo
$attribute_to_remove;
        if(
$image->hasAttribute($attribute_to_remove)){
           
$image->removeAttribute($attribute_to_remove);

        }
        if(
$attribute_to_remove=='height'){
            if(!
$image->hasAttribute($attribute_to_remove)){
               
$image->setAttribute($attribute_to_remove,'220');

            }}
        if(
$attribute_to_remove=='width'){
      if(!
$image->hasAttribute($attribute_to_remove)){
           
$image->setAttribute($attribute_to_remove,'700');

        }}
       
$c = $c+1;
    }
}
echo
$doc->saveHTML();
To Top