脚本宝典收集整理的这篇文章主要介绍了PHP实现XML与数据格式进行转换类实例,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了PHP实现XML与数据格式进行转换类。分享给大家供大家参考。具体如下:
<
PRe class="
brush:
PHp;">
$val) {
if ($prior
ITy
== 'tag') $attributes_data[$attr] = $val;
else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'
}
}
// See tag
status and do the needed.
if ($ty
PE == "open") { // The starting of the tag '
'
$parent[$level-1] = &$current;
if (!is_array($current) or (!in_array($tag,array_keys($current)))) { // Insert New tag
$current[$tag] = $result;
if ($attributes_data) $current[$tag . '_attr'] = $attributes_data;
$repeated_tag_index[$tag . '_' . $level] = 1;
$current = &$current[$tag];
} else { // There was another element with the same tag name
if (isset($current[$tag][0])) { // If there is a 0th element it is already an array
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
$repeated_tag_index[$tag . '_' . $level]++;
} else { // This section will make the value an array if multiple tags with the same name appear together
$current[$tag] = array($current[$tag],$result); //This will combine the existing item and the new item together to make an array
$repeated_tag_index[$tag . '_' . $level] = 2;
if (isset($current[$tag . '_attr'])) { // The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag . '_' . $level]-1;
$current = &$current[$tag][$last_item_index];
}
} elseif ($type == "complete") { // Tags that ends in 1 line ''
// See if the key is already taken.
if (!isset($current[$tag])) { // New Key
$current[$tag] = $result;
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $attributes_data) $current[$tag . '_attr'] = $attributes_data;
} else { // If taken,put all things inside a list(array)
if (isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array...
// ...push the new element into that array.
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
if ($priority == 'tag' and $get_attributes and $attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
$repeated_tag_index[$tag . '_' . $level]++;
} else { // If it is not an array...
$current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $get_attributes) {
if (isset($current[$tag . '_attr'])) { // The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
if ($attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
}
$repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken
}
}
} elseif ($type == 'close') { // End of tag ''
$current = &$parent[$level-1];
}
}
return($x
ML_array);
}
// Array to XML
class array2xml {
p
ublic $output = "\n";
public $sub_item = array();
public function __construct($array) {
$sub_item = array();
$this->output .= $this->xmlmake($array);
}
public function xmlmake($array,$fk = '') {
$xml = '';
global $sub_item;
for
each ($array as $key => $value) {
if (is_array($value)) {
if (is_numeric($key)) {
$this->sub_item=
array_merge($this->sub_item,array($fk));
$xml .= "<{$fk}>" . $this->xmlmake($value,$key) . "{$fk}>";
} else {
$xml .= "<{$key}>" . $this->xmlmake($value,$key) . "{$key}>";
}
} else {
$xml .= "<{$key}>{$value}{$key}>\n";
}
}
return $xml;
}
public function output(){
foreach($this->sub_item as $t){
$this->output = str_replace("<{$t}><{$t}>","<{$t}>",$this->output);
$this->output = str_replace("{$t}>{$t}>","{$t}>",$this->output);
}
return $this->output;
}
}
脚本宝典总结
以上是脚本宝典为你收集整理的PHP实现XML与数据格式进行转换类实例全部内容,希望文章能够帮你解决PHP实现XML与数据格式进行转换类实例所遇到的问题。
如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。