public static function from_array($array, $level = 1) { $xml = ''; // if ($level==1) { // $xml .= "<array>\n"; // } foreach ($array as $key => $value) { $key = strtolower($key); if (is_object($value)) { $value = get_object_vars($value); } // convert object to array if (is_array($value)) { $multi_tags = false; foreach ($value as $key2 => $value2) { if (is_object($value2)) { $value2 = get_object_vars($value2); } // convert object to array if (is_array($value2)) { $xml .= str_repeat("\t", $level) . "<{$key}>\n"; $xml .= xml::from_array($value2, $level + 1); $xml .= str_repeat("\t", $level) . "</{$key}>\n"; $multi_tags = true; } else { if (trim($value2) != '') { if (htmlspecialchars($value2) != $value2) { $xml .= str_repeat("\t", $level) . "<{$key2}><![CDATA[{$value2}]]>" . "</{$key2}>\n"; } else { $xml .= str_repeat("\t", $level) . "<{$key2}>{$value2}</{$key2}>\n"; // changed $key to $key2 } } $multi_tags = true; } } if (!$multi_tags and count($value) > 0) { $xml .= str_repeat("\t", $level) . "<{$key}>\n"; $xml .= xml::from_array($value, $level + 1); $xml .= str_repeat("\t", $level) . "</{$key}>\n"; } } else { if (trim($value) != '') { // echo "value=$value<br>"; if (htmlspecialchars($value) != $value) { $xml .= str_repeat("\t", $level) . "<{$key}>" . "<![CDATA[{$value}]]></{$key}>\n"; } else { $xml .= str_repeat("\t", $level) . "<{$key}>{$value}</{$key}>\n"; } } } } //if ($level==1) { // $xml .= "</array>\n"; // } return $xml; }
<root> <title><![CDATA[<?php echo $row['title']; ?> ]]></title> <copy><![CDATA[<?php echo $row['copy']; ?> ]]></copy> <date_added><?php echo $row['date_added']; ?> </date_added> <date_modified><?php echo $row['date_modified']; ?> </date_modified> <meta_keywords><![CDATA[<?php echo $row['meta_keywords']; ?> ]]></meta_keywords> <meta_description><![CDATA[<?php echo $row['meta_description']; ?> ]]></meta_description> <plugins> <?php echo xml::from_array($row['plugins']); ?> </plugins> </root>