rss.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 359 行

PHP
359
字号
<?php// vim: set expandtab tabstop=4 shiftwidth=4 fdm=marker:// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license,      |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Martin Jansen <mj@php.net>                                  |// |                                                                      |// +----------------------------------------------------------------------+//// $Id: RSS.php,v 1.14 2003/03/13 20:32:00 mj Exp $//require_once 'XML/Parser.php';/*** RSS parser class.** This class is a parser for Resource Description Framework (RDF) Site* Summary (RSS) documents. For more information on RSS see the* website of the RSS working group (http://www.purl.org/rss/).** @author Martin Jansen <mj@php.net>* @version $Revision: 1.14 $* @access  public*/class XML_RSS extends XML_Parser{    // {{{ properties    /**     * @var string     */    var $insideTag = '';    /**     * @var string     */    var $activeTag = '';    /**     * @var array     */    var $channel = array();    /**     * @var array     */    var $items = array();    /**     * @var array     */    var $item = array();    /**     * @var array     */    var $image = array();    /**     * @var array     */    var $textinput = array();        /**     * @var array     */    var $textinputs = array();    /**     * @var array     */    var $parentTags = array('CHANNEL', 'ITEM', 'IMAGE', 'TEXTINPUT');    /**     * @var array     */    var $channelTags = array('TITLE', 'LINK', 'DESCRIPTION', 'IMAGE',                              'ITEMS', 'TEXTINPUT');    /**     * @var array     */    var $itemTags = array('TITLE', 'LINK', 'DESCRIPTION', 'PUBDATE');    /**     * @var array     */    var $imageTags = array('TITLE', 'URL', 'LINK');    var $textinputTags = array('TITLE', 'DESCRIPTION', 'NAME', 'LINK');    /**     * List of allowed module tags     *     * Currently Dublin Core Metadata and the blogChannel RSS module     * are supported.     *     * @var array     */    var $moduleTags = array('DC:TITLE', 'DC:CREATOR', 'DC:SUBJECT', 'DC:DESCRIPTION',                            'DC:PUBLISHER', 'DC:CONTRIBUTOR', 'DC:DATE', 'DC:TYPE',                            'DC:FORMAT', 'DC:IDENTIFIER', 'DC:SOURCE', 'DC:LANGUAGE',                            'DC:RELATION', 'DC:COVERAGE', 'DC:RIGHTS',                            'BLOGCHANNEL:BLOGROLL', 'BLOGCHANNEL:MYSUBSCRIPTIONS',                            'BLOGCHANNEL:MYSUBSCRIPTIONS', 'BLOGCHANNEL:CHANGES');    // }}}    // {{{ Constructor    /**     * Constructor     *     * @access public     * @param mixed File pointer or name of the RDF file.     * @return void     */    function XML_RSS($handle = '')    {        $this->XML_Parser();        if (@is_resource($handle)) {            $this->setInput($handle);        } elseif ($handle != '') {            $this->setInputFile($handle);        } else {            $this->raiseError('No filename passed.');        }    }    // }}}    // {{{ startHandler()    /**     * Start element handler for XML parser     *     * @access private     * @param  object XML parser object     * @param  string XML element     * @param  array  Attributes of XML tag     * @return void     */    function startHandler($parser, $element, $attribs)    {        switch ($element) {            case 'CHANNEL':            case 'ITEM':            case 'IMAGE':            case 'TEXTINPUT':                $this->insideTag = $element;                break;            default:                $this->activeTag = $element;        }    }    // }}}    // {{{ endHandler()    /**     * End element handler for XML parser     *     * If the end of <item>, <channel>, <image> or <textinput>     * is reached, this function updates the structure array     * $this->struct[] and adds the field "type" to this array,     * that defines the type of the current field.     *     * @access private     * @param  object XML parser object     * @param  string     * @return void     */    function endHandler($parser, $element)    {        if ($element == $this->insideTag) {            $this->insideTag = '';            $this->struct[] = array_merge(array('type' => strtolower($element)),                                          $this->last);        }        if ($element == 'ITEM') {            $this->items[] = $this->item;            $this->item = '';        }        if ($element == 'IMAGE') {            $this->images[] = $this->image;            $this->image = '';        }        if ($element == 'TEXTINPUT') {            $this->textinputs = $this->textinput;            $this->textinput = '';        }        $this->activeTag = '';    }    // }}}    // {{{ cdataHandler()    /**     * Handler for character data     *     * @access private     * @param  object XML parser object     * @param  string CDATA     * @return void     */    function cdataHandler($parser, $cdata)    {        if (in_array($this->insideTag, $this->parentTags)) {            $tagName = strtolower($this->insideTag);            $var = $this->{$tagName . 'Tags'};            if (in_array($this->activeTag, $var) ||                in_array($this->activeTag, $this->moduleTags)) {                $this->_add($tagName, strtolower($this->activeTag),                            $cdata);            }                    }    }    // }}}    // {{{ defaultHandler()    /**     * Default handler for XML parser     *     * @access private     * @param  object XML parser object     * @param  string CDATA     * @return void     */    function defaultHandler($parser, $cdata)    {        return;    }    // }}}    // {{{ _add()    /**     * Add element to internal result sets     *     * @access private     * @param  string Name of the result set     * @param  string Fieldname     * @param  string Value     * @return void     * @see    cdataHandler     */    function _add($type, $field, $value)    {        if (empty($this->{$type}) || empty($this->{$type}[$field])) {            $this->{$type}[$field] = $value;        } else {            $this->{$type}[$field] .= $value;        }        $this->last = $this->{$type};    }    // }}}    // {{{ getStructure()    /**     * Get complete structure of RSS file     *     * @access public     * @return array     */    function getStructure()    {        return (array)$this->struct;    }    // }}}    // {{{ getchannelInfo()    /**     * Get general information about current channel     *     * This function returns an array containing the information     * that has been extracted from the <channel>-tag while parsing     * the RSS file.     *     * @access public     * @return array     */    function getChannelInfo()    {        return (array)$this->channel;    }    // }}}    // {{{ getItems()    /**     * Get items from RSS file     *     * This function returns an array containing the set of items     * that are provided by the RSS file.     *     * @access public     * @return array     */    function getItems()    {        return (array)$this->items;    }    // }}}    // {{{ getImages()    /**     * Get images from RSS file     *     * This function returns an array containing the set of images     * that are provided by the RSS file.     *     * @access public     * @return array     */    function getImages()    {        return (array)$this->images;    }    // }}}    // {{{ getTextinputs()    /**     * Get text input fields from RSS file     *     * @access public     * @return array     */    function getTextinputs()    {        return (array)$this->textinputs;    }    // }}}}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?