
- PHP - Home
- PHP - Roadmap
- PHP - Introduction
- PHP - Installation
- PHP - History
- PHP - Features
- PHP - Syntax
- PHP - Hello World
- PHP - Comments
- PHP - Variables
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ and $$ Variables
- PHP - Constants
- PHP - Magic Constants
- PHP - Data Types
- PHP - Type Casting
- PHP - Type Juggling
- PHP - Strings
- PHP - Boolean
- PHP - Integers
- PHP - Files & I/O
- PHP - Maths Functions
- PHP - Heredoc & Nowdoc
- PHP - Compound Types
- PHP - File Include
- PHP - Date & Time
- PHP - Scalar Type Declarations
- PHP - Return Type Declarations
- PHP - Operators
- PHP - Arithmetic Operators
- PHP - Comparison Operators
- PHP - Logical Operators
- PHP - Assignment Operators
- PHP - String Operators
- PHP - Array Operators
- PHP - Conditional Operators
- PHP - Spread Operator
- PHP - Null Coalescing Operator
- PHP - Spaceship Operator
- PHP Control Statements
- PHP - Decision Making
- PHP - If…Else Statement
- PHP - Switch Statement
- PHP - Loop Types
- PHP - For Loop
- PHP - Foreach Loop
- PHP - While Loop
- PHP - Do…While Loop
- PHP - Break Statement
- PHP - Continue Statement
- PHP Arrays
- PHP - Arrays
- PHP - Indexed Array
- PHP - Associative Array
- PHP - Multidimensional Array
- PHP - Array Functions
- PHP - Constant Arrays
- PHP Functions
- PHP - Functions
- PHP - Function Parameters
- PHP - Call by value
- PHP - Call by Reference
- PHP - Default Arguments
- PHP - Named Arguments
- PHP - Variable Arguments
- PHP - Returning Values
- PHP - Passing Functions
- PHP - Recursive Functions
- PHP - Type Hints
- PHP - Variable Scope
- PHP - Strict Typing
- PHP - Anonymous Functions
- PHP - Arrow Functions
- PHP - Variable Functions
- PHP - Local Variables
- PHP - Global Variables
- PHP Superglobals
- PHP - Superglobals
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP File Handling
- PHP - File Handling
- PHP - Open File
- PHP - Read File
- PHP - Write File
- PHP - File Existence
- PHP - Download File
- PHP - Copy File
- PHP - Append File
- PHP - Delete File
- PHP - Handle CSV File
- PHP - File Permissions
- PHP - Create Directory
- PHP - Listing Files
- Object Oriented PHP
- PHP - Object Oriented Programming
- PHP - Classes and Objects
- PHP - Constructor and Destructor
- PHP - Access Modifiers
- PHP - Inheritance
- PHP - Class Constants
- PHP - Abstract Classes
- PHP - Interfaces
- PHP - Traits
- PHP - Static Methods
- PHP - Static Properties
- PHP - Namespaces
- PHP - Object Iteration
- PHP - Encapsulation
- PHP - Final Keyword
- PHP - Overloading
- PHP - Cloning Objects
- PHP - Anonymous Classes
- PHP Web Development
- PHP - Web Concepts
- PHP - Form Handling
- PHP - Form Validation
- PHP - Form Email/URL
- PHP - Complete Form
- PHP - File Inclusion
- PHP - GET & POST
- PHP - File Uploading
- PHP - Cookies
- PHP - Sessions
- PHP - Session Options
- PHP - Sending Emails
- PHP - Sanitize Input
- PHP - Post-Redirect-Get (PRG)
- PHP - Flash Messages
- PHP AJAX
- PHP - AJAX Introduction
- PHP - AJAX Search
- PHP - AJAX XML Parser
- PHP - AJAX Auto Complete Search
- PHP - AJAX RSS Feed Example
- PHP XML
- PHP - XML Introduction
- PHP - Simple XML Parser
- PHP - SAX Parser Example
- PHP - DOM Parser Example
- PHP Login Example
- PHP - Login Example
- PHP - Facebook Login
- PHP - Paypal Integration
- PHP - MySQL Login
- PHP Advanced
- PHP - MySQL
- PHP.INI File Configuration
- PHP - Array Destructuring
- PHP - Coding Standard
- PHP - Regular Expression
- PHP - Error Handling
- PHP - Try…Catch
- PHP - Bugs Debugging
- PHP - For C Developers
- PHP - For PERL Developers
- PHP - Frameworks
- PHP - Core PHP vs Frame Works
- PHP - Design Patterns
- PHP - Filters
- PHP - JSON
- PHP - Exceptions
- PHP - Special Types
- PHP - Hashing
- PHP - Encryption
- PHP - is_null() Function
- PHP - System Calls
- PHP - HTTP Authentication
- PHP - Swapping Variables
- PHP - Closure::call()
- PHP - Filtered unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - Expectations
- PHP - Use Statement
- PHP - Integer Division
- PHP - Deprecated Features
- PHP - Removed Extensions & SAPIs
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI Process
- PHP - PDO Extension
- PHP - Built-In Functions
PHP xml_parse_into_struct() Function
The PHP XML Parser xml_parse_into_struct() function is a built-in PHP function that parses XML data into an array structure. The XML data is parsed into two parallel array structures: an index array, which holds pointers to the values' locations in the value array, and a value array, which contains the processed XML data itself.
This technique is particularly useful for converting XML data into a format that PHP can easily handle. It uses an XML parser resource to arrange the data in a hierarchical manner by identifying element names, properties, and values. This makes it suitable for analyzing or changing XML text programmatically.
Syntax
Below is the syntax of the PHP XML Parser xml_parse_into_struct() function −
int xml_parse_into_struct( XMLParser $p, string $data, array &$values, array &$index = null )
Parameters
Here are the parameters of the xml_parse_into_struct() function −
$p: (Required) It is used to specifies XML parser to use.
$data: (Required) It is used to specifies XML data to parse.
$values: (Required) It is used to specifies the target array for the XML data.
$index: (Optional) It is used to specifies the target array for index data.
Return Value
The xml_parse_into_struct() function returns 0 if it fails, 1 if it succeeds. This is not the same as FALSE and TRUE; be cautious with operators like ===.
PHP Version
First introduced in core PHP 4, the xml_parse_into_struct() function continues to function easily in PHP 5, PHP 7, and PHP 8.
Example 1
This PHP script shows how to parse an XML text and extract its structure using the PHP XML Parser xml_parse_into_struct() function. It defines an XML string, creates a parser, and splits the XML data into two arrays: one for element values and another for element indices.
<?php $local = "<para><note>simple note</note></para>"; $p = xml_parser_create(); xml_parse_into_struct($p, $local, $vals, $index); xml_parser_free($p); echo "Index array is \n"; print_r($index); echo "\nVals array\n"; print_r($vals); ?>
This will produce following result −
Index array Array is ( [PARA] => Array ( [0] => 0 [1] => 2 ) [NOTE] => Array ([0] => 1 ) ) Vals array Array ( [0] => Array ( [tag] => PARA [type] => open [level] => 1 ) [1] => Array ( [tag] => NOTE [type] => complete [level] => 2 [value] => simple note ) [2] => Array ( [tag] => PARA [type] => close [level] => 1 ) )
Example 2
This program shows how to use xml_parse_into_struct() function to parse simple XML data and save it as an array. The code creates an XML parser (xml_parser_create) and then splits a simple XML text into two arrays: $values and $index.
<?php // Create XML parser $p = xml_parser_create(); // XML data to parse $xmlData = "<note><to>Tina</to><from>Sharma</from><message>Hello!</message></note>"; // Arrays to hold the parsed values and index $values = []; $index = []; // Parse XML into arrays if (xml_parse_into_struct($p, $xmlData, $values, $index)) { // Parsed XML data print_r($values); // Index structure print_r($index); } else { echo "Parsing failed."; } // Free the parser xml_parser_free($p); ?>
Output
This will generate the below output −
Array ( [0] => Array ( [tag] => NOTE [type] => open [level] => 1 ) [1] => Array ( [tag] => TO [type] => complete [level] => 2 [value] => Tina ) [2] => Array ( [tag] => FROM [type] => complete [level] => 2 [value] => Sharma ) [3] => Array ( [tag] => MESSAGE [type] => complete [level] => 2 [value] => Hello! ) [4] => Array ( [tag] => NOTE [type] => close [level] => 1 ) ) Array ( [NOTE] => Array ( [0] => 0 [1] => 4 ) [TO] => Array ( [0] => 1 ) [FROM] => Array ( [0] => 2 ) [MESSAGE] => Array ( [0] => 3 ) )
Example 3
Now in the below code we will handle nested XML structure. This program basically parses a nested XML structure using the xml_parse_into_struct() function and shows how the values array shows the hierarchy.
<?php // Create XML parser $p = xml_parser_create(); // Nested XML data $xmlData = "<library><book><title>PHP Guide</title></book><book><title>XML Handbook</title></book></library>"; // Arrays for parsed data $values = []; $index = []; // Parse XML into arrays if (xml_parse_into_struct($p, $xmlData, $values, $index)) { // Display structured XML data print_r($values); // Show index mapping print_r($index); } else { echo "Parsing failed."; } // Free the parser xml_parser_free($p); ?>
Output
This will create the below output −
Array ( [0] => Array ( [tag] => LIBRARY [type] => open [level] => 1 ) [1] => Array ( [tag] => BOOK [type] => open [level] => 2 ) [2] => Array ( [tag] => TITLE [type] => complete [level] => 3 [value] => PHP Guide ) [3] => Array ( [tag] => BOOK [type] => close [level] => 2 ) [4] => Array ( [tag] => BOOK [type] => open [level] => 2 ) [5] => Array ( [tag] => TITLE [type] => complete [level] => 3 [value] => XML Handbook ) [6] => Array ( [tag] => BOOK [type] => close [level] => 2 ) [7] => Array ( [tag] => LIBRARY [type] => close [level] => 1 ) ) Array ( [LIBRARY] => Array ( [0] => 0 [1] => 7 ) [BOOK] => Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 ) [TITLE] => Array ( [0] => 2 [1] => 5 ) )