PHP 8.3.4 Released!

DOMDocument::createAttribute

(PHP 5, PHP 7, PHP 8)

DOMDocument::createAttributeCria um novo attribute

Descrição

public DOMDocument::createAttribute(string $localName): DOMAttr|false

Esta função cria uma nova instância da classe DOMAttr. Este nó não aparecerá no documento a menos que seja inserido, por exemplo, com DOMNode::appendChild().

Parâmetros

localName

O nome do atributo.

Valor Retornado

O novo DOMAttr ou false se ocorrer um erro.

Erros/Exceções

DOM_INVALID_CHARACTER_ERR

Gerado se localName contiver um caractere inválido.

Veja Também

add a note

User Contributed Notes 2 notes

up
88
Beerkeeper
12 years ago
Just in case it isn't clear (like I had), an example:

<?php

$domDocument
= new DOMDocument('1.0', "UTF-8");
$domElement = $domDocument->createElement('field','some random data');
$domAttribute = $domDocument->createAttribute('name');

// Value for the created attribute
$domAttribute->value = 'attributevalue';

// Don't forget to append it to the element
$domElement->appendChild($domAttribute);

// Append it to the document itself
$domDocument->appendChild($domElement);

?>

Will output:
<?xml version="1.0" encoding="UTF-8"?>
<field name="attributevalue">some random data</field>
up
-9
Skateside
10 years ago
This may be obvious to most people, but it gave me a few minutes of head-scratching before I figured it out, but ampersands need to be properly escaped as HTML entities.

<?php
$doc
= new DOMDocument('1.0', "UTF-8");

$invalid_elem = $doc->createElement('field', 'incorrect attribute');
$invalid_attr = $doc->createAttribute('name');
$invalid_attr->value = 'foo&bar';
$invalid_elem->appendChild($invalid_attr);
$doc->appendChild($invalid_elem);

$valid_elem = $doc->createElement('field', 'correct attribute');
$valid_attr = $doc->createAttribute('name');
$valid_attr->value = 'foo&amp;bar';
$valid_elem->appendChild($valid_attr);
$doc->appendChild($valid_elem);

?>

Will output:
<?xml version="1.0" encoding="UTF-8"?>
<field name="foo">incorrect attribute</field>
<field name="foo&bar">correct attribute</field>

As near as I can figure out, no exception is thrown for an invalid attribute. This will affect DOMDocuments created as HTML as well as XML.
To Top