这对于大多数人来说可能是显而易见的,但在我弄清楚之前,它让我挠头思考了几分钟,但与号需要正确转义为 HTML 实体。
<?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&bar';
$valid_elem->appendChild($valid_attr);
$doc->appendChild($valid_elem);
?>
将输出
<?xml version="1.0" encoding="UTF-8"?>
<field name="foo">incorrect attribute</field>
<field name="foo&bar">correct attribute</field>
据我所知,对于无效属性,不会引发异常。这将影响作为 HTML 和 XML 创建的 DOMDocuments。