%PDF- %PDF-
Server IP : 79.170.40.229 / Your IP : 3.22.217.202 Web Server : Apache System : Linux web232.extendcp.co.uk 4.18.0-513.24.1.el8_9.x86_64 #1 SMP Mon Apr 8 11:23:13 EDT 2024 x86_64 User : 1stforcarhirealicante.com ( 296923) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/cwd/libraries/domit/ |
Upload File : |
<?php /** * parseAttributes is a function for parsing attribute and attribute-like strings * @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 **/ /** attribute parse state, just before parsing an attribute */ define('DOMIT_ATTRIBUTEPARSER_STATE_ATTR_NONE', 0); /** attribute parse state, parsing an attribute key */ define('DOMIT_ATTRIBUTEPARSER_STATE_ATTR_KEY', 1); /** attribute parse state, parsing an attribute value */ define('DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE', 2); /** *@global Array Translation table for predefined XML entities */ $GLOBALS['DOMIT_PREDEFINED_ENTITIES'] = array('&' => '&', '<' => '<', '>' => '>', '"' => '"', "'" => '''); /** * Parses the attributes string into an array of key / value pairs * @param string The attribute text * @return Array An array of key / value pairs */ function parseAttributes($attrText, $convertEntities = true, $definedEntities = null) { $attrText = trim($attrText); $attrArray = array(); $maybeEntity = false; $total = strlen($attrText); $keyDump = ''; $valueDump = ''; $currentState = DOMIT_ATTRIBUTEPARSER_STATE_ATTR_NONE; $quoteType = ''; if ($definedEntities == null) $defineEntities = array(); for ($i = 0; $i < $total; $i++) { // $currentChar = $attrText{$i}; $currentChar = substr($attrText, $i, 1); if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_NONE) { if (trim($currentChar != '')) { $currentState = DOMIT_ATTRIBUTEPARSER_STATE_ATTR_KEY; } } switch ($currentChar) { case "\t": if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE) { $valueDump .= $currentChar; } else { $currentChar = ''; } break; case "\x0B": //vertical tab case "\n": case "\r": $currentChar = ''; break; case '=': if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE) { $valueDump .= $currentChar; } else { $currentState = DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE; $quoteType = ''; $maybeEntity = false; } break; case '"': if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE) { if ($quoteType == '') { $quoteType = '"'; } else { if ($quoteType == $currentChar) { if ($convertEntities && $maybeEntity) { $valueDump = strtr($valueDump, DOMIT_PREDEFINED_ENTITIES); $valueDump = strtr($valueDump, $definedEntities); } $attrArray[trim($keyDump)] = $valueDump; $keyDump = $valueDump = $quoteType = ''; $currentState = DOMIT_ATTRIBUTEPARSER_STATE_ATTR_NONE; } else { $valueDump .= $currentChar; } } } break; case "'": if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_VALUE) { if ($quoteType == '') { $quoteType = "'"; } else { if ($quoteType == $currentChar) { if ($convertEntities && $maybeEntity) { $valueDump = strtr($valueDump, $predefinedEntities); $valueDump = strtr($valueDump, $definedEntities); } $attrArray[trim($keyDump)] = $valueDump; $keyDump = $valueDump = $quoteType = ''; $currentState = DOMIT_ATTRIBUTEPARSER_STATE_ATTR_NONE; } else { $valueDump .= $currentChar; } } } break; case '&': //might be an entity $maybeEntity = true; $valueDump .= $currentChar; break; default: if ($currentState == DOMIT_ATTRIBUTEPARSER_STATE_ATTR_KEY) { $keyDump .= $currentChar; } else { $valueDump .= $currentChar; } } } return $attrArray; } //parseAttributes ?>