📄 domxml-php4-php5.php
字号:
<?php/* Requires PHP5, uses built-in DOM extension. To be used in PHP4 scripts using DOMXML extension: allows PHP4/DOMXML scripts to run on PHP5/DOM. (Optional: requires PHP5/XSL extension for domxml_xslt functions, PHP>=5.1 for XPath evaluation functions, and PHP>=5.1/libxml for DOMXML error reports) Typical use: { if (PHP_VERSION>='5') require_once('domxml-php4-to-php5.php'); } Version 1.20a, 2008-11-06, http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/ ------------------------------------------------------------------ Written by Alexandre Alapetite, http://alexandre.alapetite.net/cv/ Copyright 2004-2008, GNU Lesser General Public License, http://www.gnu.org/licenses/lgpl.html This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/lgpl.html> == Rights and obligations == - Attribution: You must give the original author credit. - Share Alike: If you alter or transform this library, you may distribute the resulting library only under the same license GNU/LGPL. - In case of jurisdiction dispute, the French law is authoritative. - Any of these conditions can be waived if you get permission from Alexandre Alapetite. - Not required, but please send to Alexandre Alapetite the modifications you make, in order to improve this file for the benefit of everybody. If you want to distribute this code, please do it as a link to: http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/*/define('DOMXML_LOAD_PARSING',0);define('DOMXML_LOAD_VALIDATING',1);define('DOMXML_LOAD_RECOVERING',2);define('DOMXML_LOAD_SUBSTITUTE_ENTITIES',4);//define('DOMXML_LOAD_COMPLETE_ATTRS',8);define('DOMXML_LOAD_DONT_KEEP_BLANKS',16);function domxml_new_doc($version) {return new php4DOMDocument();}function domxml_new_xmldoc($version) {return new php4DOMDocument();}function domxml_open_file($filename,$mode=DOMXML_LOAD_PARSING,&$error=null){ $dom=new php4DOMDocument($mode); $errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION'); if ($errorMode) libxml_use_internal_errors(true); if (!$dom->myDOMNode->load($filename)) $dom=null; if ($errorMode) { $error=array_map('_error_report',libxml_get_errors()); libxml_clear_errors(); } return $dom;}function domxml_open_mem($str,$mode=DOMXML_LOAD_PARSING,&$error=null){ $dom=new php4DOMDocument($mode); $errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION'); if ($errorMode) libxml_use_internal_errors(true); if (!$dom->myDOMNode->loadXML($str)) $dom=null; if ($errorMode) { $error=array_map('_error_report',libxml_get_errors()); libxml_clear_errors(); } return $dom;}function html_doc($html_doc,$from_file=false){ $dom=new php4DOMDocument(); if ($from_file) $result=$dom->myDOMNode->loadHTMLFile($html_doc); else $result=$dom->myDOMNode->loadHTML($html_doc); return $result ? $dom : null;}function html_doc_file($filename) {return html_doc($filename,true);}function xmldoc($str) {return domxml_open_mem($str);}function xmldocfile($filename) {return domxml_open_file($filename);}function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->xpath_eval($eval_str,$contextnode);}function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}function xpath_register_ns($xpath_context,$prefix,$namespaceURI) {return $xpath_context->myDOMXPath->registerNamespace($prefix,$namespaceURI);}function _entityDecode($text) {return html_entity_decode(strtr($text,array('''=>'\'')),ENT_QUOTES,'UTF-8');}function _error_report($error) {return array('errormessage'=>$error->message,'nodename'=>'','line'=>$error->line,'col'=>$error->column)+($error->file==''?array():array('directory'=>dirname($error->file),'file'=>basename($error->file)));}class php4DOMAttr extends php4DOMNode{ function __get($name) { if ($name==='name') return $this->myDOMNode->name; else return parent::__get($name); } function name() {return $this->myDOMNode->name;} function set_content($text) {} //function set_value($content) {return $this->myDOMNode->value=htmlspecialchars($content,ENT_QUOTES);} function specified() {return $this->myDOMNode->specified;} function value() {return $this->myDOMNode->value;}}class php4DOMDocument extends php4DOMNode{ function php4DOMDocument($mode=DOMXML_LOAD_PARSING) { $this->myDOMNode=new DOMDocument(); $this->myOwnerDocument=$this; if ($mode & DOMXML_LOAD_VALIDATING) $this->myDOMNode->validateOnParse=true; if ($mode & DOMXML_LOAD_RECOVERING) $this->myDOMNode->recover=true; if ($mode & DOMXML_LOAD_SUBSTITUTE_ENTITIES) $this->myDOMNode->substituteEntities=true; if ($mode & DOMXML_LOAD_DONT_KEEP_BLANKS) $this->myDOMNode->preserveWhiteSpace=false; } function add_root($name) { if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild); return new php4DOMElement($this->myDOMNode->appendChild($this->myDOMNode->createElement($name)),$this->myOwnerDocument); } function create_attribute($name,$value) { $myAttr=$this->myDOMNode->createAttribute($name); $myAttr->value=htmlspecialchars($value,ENT_QUOTES); return new php4DOMAttr($myAttr,$this); } function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);} function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);} function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);} function create_element_ns($uri,$name,$prefix=null) { if ($prefix==null) $prefix=$this->myDOMNode->lookupPrefix($uri); if (($prefix==null)&&(($this->myDOMNode->documentElement==null)||(!$this->myDOMNode->documentElement->isDefaultNamespace($uri)))) $prefix='a'.sprintf('%u',crc32($uri)); return new php4DOMElement($this->myDOMNode->createElementNS($uri,$prefix==null ? $name : $prefix.':'.$name),$this); } function create_entity_reference($content) {return new php4DOMNode($this->myDOMNode->createEntityReference($content),$this);} //By Walter Ebert 2007-01-22 function create_processing_instruction($target,$data=''){return new php4DomProcessingInstruction($this->myDOMNode->createProcessingInstruction($target,$data),$this);} function create_text_node($content) {return new php4DOMText($this->myDOMNode->createTextNode($content),$this);} function document_element() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);} function dump_file($filename,$compressionmode=false,$format=false) { $format0=$this->myDOMNode->formatOutput; $this->myDOMNode->formatOutput=$format; $res=$this->myDOMNode->save($filename); $this->myDOMNode->formatOutput=$format0; return $res; } function dump_mem($format=false,$encoding=false) { $format0=$this->myDOMNode->formatOutput; $this->myDOMNode->formatOutput=$format; $encoding0=$this->myDOMNode->encoding; if ($encoding) $this->myDOMNode->encoding=$encoding; $dump=$this->myDOMNode->saveXML(); $this->myDOMNode->formatOutput=$format0; if ($encoding) $this->myDOMNode->encoding= $encoding0=='' ? 'UTF-8' : $encoding0; //UTF-8 is XML default encoding return $dump; } function free() { if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild); $this->myDOMNode=null; $this->myOwnerDocument=null; } function get_element_by_id($id) {return parent::_newDOMElement($this->myDOMNode->getElementById($id),$this);} function get_elements_by_tagname($name) { $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name); $nodeSet=array(); $i=0; if (isset($myDOMNodeList)) while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this); return $nodeSet; } function html_dump_mem() {return $this->myDOMNode->saveHTML();} function root() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);} function xpath_new_context() {return new php4DOMXPath($this);}}class php4DOMElement extends php4DOMNode{ function add_namespace($uri,$prefix) { if ($this->myDOMNode->hasAttributeNS('http://www.w3.org/2000/xmlns/',$prefix)) return false; else { $this->myDOMNode->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$prefix,$uri); //By Daniel Walker 2006-09-08 return true; } } function get_attribute($name) {return $this->myDOMNode->getAttribute($name);} function get_attribute_node($name) {return parent::_newDOMElement($this->myDOMNode->getAttributeNode($name),$this->myOwnerDocument);} function get_elements_by_tagname($name) { $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name); $nodeSet=array(); $i=0; if (isset($myDOMNodeList)) while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument); return $nodeSet; } function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);} function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);} function set_attribute($name,$value) { //return $this->myDOMNode->setAttribute($name,$value); //Does not return a DomAttr $myAttr=$this->myDOMNode->ownerDocument->createAttribute($name); $myAttr->value=htmlspecialchars($value,ENT_QUOTES); //Entity problem reported by AL-DesignWorks 2007-09-07 $this->myDOMNode->setAttributeNode($myAttr); return new php4DOMAttr($myAttr,$this->myOwnerDocument); } /*function set_attribute_node($attr) { $this->myDOMNode->setAttributeNode($this->_importNode($attr)); return $attr; }*/ function set_name($name) { if ($this->myDOMNode->prefix=='') $newNode=$this->myDOMNode->ownerDocument->createElement($name); else $newNode=$this->myDOMNode->ownerDocument->createElementNS($this->myDOMNode->namespaceURI,$this->myDOMNode->prefix.':'.$name); $myDOMNodeList=$this->myDOMNode->attributes; $i=0; if (isset($myDOMNodeList)) while ($node=$myDOMNodeList->item($i++)) if ($node->namespaceURI=='') $newNode->setAttribute($node->name,$node->value); else $newNode->setAttributeNS($node->namespaceURI,$node->nodeName,$node->value); $myDOMNodeList=$this->myDOMNode->childNodes; if (isset($myDOMNodeList)) while ($node=$myDOMNodeList->item(0)) $newNode->appendChild($node); $this->myDOMNode->parentNode->replaceChild($newNode,$this->myDOMNode); $this->myDOMNode=$newNode; return true; } function tagname() {return $this->tagname;}}class php4DOMNode{ public $myDOMNode; public $myOwnerDocument; function php4DOMNode($aDomNode,$aOwnerDocument) { $this->myDOMNode=$aDomNode; $this->myOwnerDocument=$aOwnerDocument; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -