All pastes #232082 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-11-01 05:34 UTC
rendered paste body
<?php
$file = "configuration.xml";
$depth = array();

function xmlStart($parser, $name, $attrs) {
	global $depth,$depths,$constant;
	if ($depth[$parser] == 1) { unset($depths[2],$depths[3]); }
	$depths[$depth[$parser]] = $name;
	$depth[$parser]++;
}

function xmlChar($parser, $data) {
	global $depths,$constant;
	$data = trim($data);
	if (!empty($data)) {
		$depthMax = count($depths)-1;
		for ($i=1; $i<=$depthMax; $i++) {
			if ($i > 1) { $constantKey .= '_'; }
			$constantKey .= $depths[$i];
		}
		$constant[$constantKey] = $data;
	}
}

function xmlEnd($parser, $name) {
   global $depth,$depths,$constant;
   $depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "xmlStart", "xmlEnd");
xml_set_character_data_handler($xml_parser, 'xmlChar');
if (!($fp = fopen($file, "r"))) {
   die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
   if (!xml_parse($xml_parser, $data, feof($fp))) {
       die(sprintf("XML error: %s at line %d",
                   xml_error_string(xml_get_error_code($xml_parser)),
                   xml_get_current_line_number($xml_parser)));
   }
}
xml_parser_free($xml_parser);

foreach ($constant as $key => $value) {
	define($key, $value);
}

print_r(get_defined_constants());
?>