diff options
| author | s1n <[email protected]> | 2020-03-28 10:36:41 -0700 |
|---|---|---|
| committer | s1n <[email protected]> | 2020-03-28 10:36:41 -0700 |
| commit | 25b7d2aab61ae6421398d3abae5da6ffe590333d (patch) | |
| tree | 611985ec78bb2d94099c9fd5dd687f5c9cee6f3e /includes/functions-xml.php | |
| parent | Initial commit (diff) | |
| download | crack.cf-backup-master.tar.xz crack.cf-backup-master.zip | |
Diffstat (limited to 'includes/functions-xml.php')
| -rw-r--r-- | includes/functions-xml.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/includes/functions-xml.php b/includes/functions-xml.php new file mode 100644 index 0000000..296cbc5 --- /dev/null +++ b/includes/functions-xml.php @@ -0,0 +1,84 @@ +<?php +/*************************************************************************/ +/* This class stores associative arrays in an xml formatted string. */ +/* There's also a function thar retrieves them. If you try to use */ +/* xml2array with a general xml, it can fail, since there can be some */ +/* repeated indexes.... */ +/* Source: http://www.phpclasses.org/browse/package/2286/ */ +/*************************************************************************/ + +// @codeCoverageIgnoreStart + +class yourls_array2xml { + var $text; + var $arrays, $keys, $node_flag, $depth, $xml_parser; + /*Converts an array to an xml string*/ + function array2xml($array) { + //global $text; + $this->text="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><result>"; + $this->text.= $this->array_transform($array); + $this->text .="</result>"; + return $this->text; + } + + function array_transform($array){ + //global $array_text; + foreach($array as $key => $value){ + if(!is_array($value)){ + //BEGIN code mod by Doug Vanderweide, 13 Jan 2011 + //does $value contain html entities? + if(strlen($value) != strlen(htmlentities($value))) { + //if so, encode as CDATA + $value = "<![CDATA[" . htmlentities($value) . "]]>"; + } + $this->text .= "<$key>$value</$key>"; + //END code mod + } else { + $this->text.="<$key>"; + $this->array_transform($value); + $this->text.="</$key>"; + } + } + //return $array_text; + + } + /*Transform an XML string to associative array "XML Parser Functions"*/ + function xml2array($xml){ + $this->depth=-1; + $this->xml_parser = xml_parser_create(); + xml_set_object($this->xml_parser, $this); + xml_parser_set_option ($this->xml_parser,XML_OPTION_CASE_FOLDING,0);//Don't put tags uppercase + xml_set_element_handler($this->xml_parser, "startElement", "endElement"); + xml_set_character_data_handler($this->xml_parser,"characterData"); + xml_parse($this->xml_parser,$xml,true); + xml_parser_free($this->xml_parser); + return $this->arrays[0]; + + } + function startElement($parser, $name, $attrs) + { + $this->keys[]=$name; //We add a key + $this->node_flag=1; + $this->depth++; + } + function characterData($parser,$data) + { + $key=end($this->keys); + $this->arrays[$this->depth][$key]=$data; + $this->node_flag=0; //So that we don't add as an array, but as an element + } + function endElement($parser, $name) + { + $key=array_pop($this->keys); + //If $node_flag==1 we add as an array, if not, as an element + if($this->node_flag==1){ + $this->arrays[$this->depth][$key]=$this->arrays[$this->depth+1]; + unset($this->arrays[$this->depth+1]); + } + $this->node_flag=1; + $this->depth--; + } + +}//End of the class + +// @codeCoverageIgnoreEnd |