mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Fix GH-12170: Can't use xpath with comments in SimpleXML
This commit is contained in:
3
NEWS
3
NEWS
@@ -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)
|
||||
|
||||
14 Sep 2023, PHP 8.3.0RC2
|
||||
|
||||
- Core:
|
||||
|
||||
@@ -1313,7 +1313,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