mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.3'
* PHP-8.3: Fix GH-12170: Can't use xpath with comments in SimpleXML
This commit is contained in:
@@ -1300,7 +1300,7 @@ PHP_METHOD(SimpleXMLElement, xpath)
|
||||
|
||||
for (i = 0; i < result->nodeNr; ++i) {
|
||||
nodeptr = result->nodeTab[i];
|
||||
if (nodeptr->type == XML_TEXT_NODE || nodeptr->type == XML_ELEMENT_NODE || nodeptr->type == XML_ATTRIBUTE_NODE || nodeptr->type == XML_PI_NODE) {
|
||||
if (nodeptr->type == XML_TEXT_NODE || nodeptr->type == XML_ELEMENT_NODE || nodeptr->type == XML_ATTRIBUTE_NODE || nodeptr->type == XML_PI_NODE || nodeptr->type == XML_COMMENT_NODE) {
|
||||
/**
|
||||
* Detect the case where the last selector is text(), simplexml
|
||||
* always accesses the text() child by default, therefore we assign
|
||||
|
||||
52
ext/simplexml/tests/bug12170.phpt
Normal file
52
ext/simplexml/tests/bug12170.phpt
Normal file
@@ -0,0 +1,52 @@
|
||||
--TEST--
|
||||
Bug GH-12170 (Can't use xpath with comments in SimpleXML)
|
||||
--EXTENSIONS--
|
||||
simplexml
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$xml = <<<XML
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<foo>
|
||||
<bar>text node</bar>
|
||||
<bar><!-- baz --></bar>
|
||||
<bar><!-- foo --></bar>
|
||||
</foo>
|
||||
XML;
|
||||
|
||||
$sxe = simplexml_load_string($xml);
|
||||
|
||||
var_dump(
|
||||
$sxe->xpath('//bar')
|
||||
);
|
||||
|
||||
foreach ($sxe->xpath('//comment()') as $comment) {
|
||||
var_dump($comment->getName());
|
||||
var_dump($comment->asXML());
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
array(3) {
|
||||
[0]=>
|
||||
object(SimpleXMLElement)#2 (1) {
|
||||
[0]=>
|
||||
string(9) "text node"
|
||||
}
|
||||
[1]=>
|
||||
object(SimpleXMLElement)#3 (1) {
|
||||
["comment"]=>
|
||||
object(SimpleXMLElement)#5 (0) {
|
||||
}
|
||||
}
|
||||
[2]=>
|
||||
object(SimpleXMLElement)#4 (1) {
|
||||
["comment"]=>
|
||||
object(SimpleXMLElement)#5 (0) {
|
||||
}
|
||||
}
|
||||
}
|
||||
string(7) "comment"
|
||||
string(12) "<!-- baz -->"
|
||||
string(7) "comment"
|
||||
string(12) "<!-- foo -->"
|
||||
Reference in New Issue
Block a user