Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /AppServ/www/news/nhrc-bk1/libraries/domit/ |
Upload File : |
<?php /** * DOMIT! Doctor is a set of utilities for repairing malformed XML * @package domit-xmlparser * @copyright (C) 2004 John Heinstein. All rights reserved * @license http://www.gnu.org/copyleft/lesser.html LGPL License * @author John Heinstein <johnkarl@nbnet.nb.ca> * @link http://www.engageinteractive.com/domit/ DOMIT! Home Page * DOMIT! is Free Software **/ /** * A (static) class containing utilities for repairing malformed XML * * @package domit-xmlparser * @author John Heinstein <johnkarl@nbnet.nb.ca> */ class domit_doctor { /** * Looks for illegal ampersands and converts them to entities * @param string The xml text to be repaired * @return string The repaired xml text */ function fixAmpersands($xmlText) { $xmlText = trim($xmlText); $startIndex = -1; $processing = true; $illegalChar = '&'; while ($processing) { $startIndex = strpos($xmlText, $illegalChar, ($startIndex + 1)); if ($startIndex !== false) { $xmlText = domit_doctor::evaluateCharacter($xmlText, $illegalChar, ($startIndex + 1)); } else { $processing = false; } } return $xmlText; } //fixAmpersands /** * Evaluates whether an ampersand should be converted to an entity, and performs the conversion * @param string The xml text * @param string The (ampersand) character * @param int The character index immediately following the ampersand in question * @return string The repaired xml text */ function evaluateCharacter($xmlText, $illegalChar, $startIndex) { $total = strlen($xmlText); $searchingForCDATASection = false; for ($i = $startIndex; $i < $total; $i++) { $currChar = substr($xmlText, $i, 1); if (!$searchingForCDATASection) { switch ($currChar) { case ' ': case "'": case '"': case "\n": case "\r": case "\t": case '&': case "]": $searchingForCDATASection = true; break; case ";": return $xmlText; break; } } else { switch ($currChar) { case '<': case '>': return (substr_replace($xmlText, '&', ($startIndex - 1) , 1)); break; case "]": return $xmlText; break; } } } return $xmlText; } //evaluateCharacter } //domit_doctor ?>