File tree 3 files changed +63
-1
lines changed 3 files changed +63
-1
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,10 @@ PHP NEWS
34
34
- PCRE:
35
35
. Update bundled libpcre2 to 10.42. (nielsdos)
36
36
37
+ - SimpleXML:
38
+ . Fixed bug #52751 (XPath processing-instruction() function is not
39
+ supported). (nielsdos)
40
+
37
41
- SPL:
38
42
. Fixed bug GH-11972 (RecursiveCallbackFilterIterator regression in 8.1.18).
39
43
(nielsdos)
Original file line number Diff line number Diff line change @@ -1313,7 +1313,7 @@ PHP_METHOD(SimpleXMLElement, xpath)
1313
1313
1314
1314
for (i = 0 ; i < result -> nodeNr ; ++ i ) {
1315
1315
nodeptr = result -> nodeTab [i ];
1316
- if (nodeptr -> type == XML_TEXT_NODE || nodeptr -> type == XML_ELEMENT_NODE || nodeptr -> type == XML_ATTRIBUTE_NODE ) {
1316
+ if (nodeptr -> type == XML_TEXT_NODE || nodeptr -> type == XML_ELEMENT_NODE || nodeptr -> type == XML_ATTRIBUTE_NODE || nodeptr -> type == XML_PI_NODE ) {
1317
1317
/**
1318
1318
* Detect the case where the last selector is text(), simplexml
1319
1319
* always accesses the text() child by default, therefore we assign
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Bug #52751 (XPath processing-instruction() function is not supported)
3
+ --EXTENSIONS--
4
+ simplexml
5
+ --FILE--
6
+ <?php
7
+
8
+ $ xml = <<<XML
9
+ <?xml version="1.0" encoding="utf-8"?>
10
+ <foo>
11
+ <bar>text node</bar>
12
+ <bar><?baz href="ftw" ?></bar>
13
+ <bar><?foo bar ?></bar>
14
+ </foo>
15
+ XML ;
16
+
17
+ $ sxe = simplexml_load_string ($ xml );
18
+
19
+ var_dump (
20
+ $ sxe ->xpath ('//bar ' )
21
+ );
22
+
23
+ var_dump (
24
+ $ sxe ->xpath ('//processing-instruction( \'baz \') ' )
25
+ );
26
+
27
+ foreach ($ sxe ->xpath ('//processing-instruction() ' ) as $ pi ) {
28
+ var_dump ($ pi ->getName ());
29
+ }
30
+
31
+ ?>
32
+ --EXPECT--
33
+ array(3) {
34
+ [0]=>
35
+ object(SimpleXMLElement)#2 (1) {
36
+ [0]=>
37
+ string(9) "text node"
38
+ }
39
+ [1]=>
40
+ object(SimpleXMLElement)#3 (1) {
41
+ ["baz"]=>
42
+ object(SimpleXMLElement)#5 (0) {
43
+ }
44
+ }
45
+ [2]=>
46
+ object(SimpleXMLElement)#4 (1) {
47
+ ["foo"]=>
48
+ object(SimpleXMLElement)#5 (0) {
49
+ }
50
+ }
51
+ }
52
+ array(1) {
53
+ [0]=>
54
+ object(SimpleXMLElement)#4 (0) {
55
+ }
56
+ }
57
+ string(3) "baz"
58
+ string(3) "foo"
You can’t perform that action at this time.
0 commit comments