note 98226 deleted from simplexmlelement.asXML by danbrown

From: Date: Wed, 02 Jun 2010 20:56:20 +0000
Subject: note 98226 deleted from simplexmlelement.asXML by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-169833@lists.php.net to get a copy of this message
Note Submitter: dimzav at gmail dot com ---- Fixed bug in gary dot malcolm at gmail dot com asPrettyXml() function: /** * Pretty format xml. * * @static * @link http://php.net/manual/en/simplexmlelement.asXML.php#77816 * @param string $string * @return string */ private static function _prettyFormatXML($string) { // put each element on it's own line $string = preg_replace("#>\s*<#", ">\n<", $string); // each element to own array $xmlArray = explode("\n", $string); // holds indentation $currIndent = 0; // set xml element first by shifting of initial element $string = array_shift($xmlArray) . "\n"; foreach ($xmlArray as $element) { $element = trim($element, "\n"); // find open only tags... add name to stack, and print to string increment $currIndent if (preg_match('#^<([\w])+[^>]*>$#U', $element)) { $string .= str_repeat(' ', $currIndent) . $element . "\n"; $currIndent += self::INDENT; } elseif (preg_match('#^<\/.+>$#', $element)) { // find standalone closures, decrement $currIndent, print to string $currIndent -= self::INDENT; if ($currIndent < 0) { echo $element."\n".$string; exit(); } $string .= str_repeat(' ', $currIndent) . $element . "\n"; } else { // find open/closed tags on the same line print to string $string .= str_repeat(' ', $currIndent) . $element . "\n"; } } return $string; }

« previous php.notes (#169833) next »