1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
  Fix GH-12170: Can't use xpath with comments in SimpleXML
This commit is contained in:
Niels Dossche
2023-09-14 18:42:47 +02:00
3 changed files with 56 additions and 1 deletions

3
NEWS
View File

@@ -5,6 +5,9 @@ PHP NEWS
- Filter:
. Fix explicit FILTER_REQUIRE_SCALAR with FILTER_CALLBACK (ilutov)
- SimpleXML:
. Fixed bug GH-12170 (Can't use xpath with comments in SimpleXML). (nielsdos)
28 Sep 2023, PHP 8.2.11
- Core:

View File

@@ -1322,7 +1322,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

View 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 -->"