1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
--TEST--
Bug #79701 (getElementById does not correctly work with duplicate definitions) - set attribute in html variation
--EXTENSIONS--
dom
--FILE--
<?php
foreach (["xml:id", "ID"] as $name) {
$dom = Dom\HTMLDocument::createFromString(<<<HTML
<p>
<em id="x">1</em>
<strong id="y">2</strong>
</p>
HTML, LIBXML_NOERROR);
echo "\n=== Attribute name $name ===\n\n";
$test1 = $dom->getElementById('x');
$test2 = $dom->getElementById('y');
echo "--- After resetting em's id ---\n";
$test1->setAttribute($name, 'y');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting strong's id ---\n";
$test2->setAttribute($name, 'x');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting em's id ---\n";
$test1->setAttribute($name, 'z');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting strong's id ---\n";
$test2->setAttribute($name, 'z');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- Get id z ---\n";
var_dump($dom->getElementById('z')?->nodeName);
}
?>
--EXPECT--
=== Attribute name xml:id ===
--- After resetting em's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting strong's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting em's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting strong's id ---
string(2) "EM"
string(6) "STRONG"
--- Get id z ---
NULL
=== Attribute name ID ===
--- After resetting em's id ---
NULL
string(2) "EM"
--- After resetting strong's id ---
string(6) "STRONG"
string(2) "EM"
--- After resetting em's id ---
string(6) "STRONG"
NULL
--- After resetting strong's id ---
NULL
NULL
--- Get id z ---
string(2) "EM"
|