PHP RSS 生成类

 更新时间:2016年11月25日 16:55  点击:1881

<?
if (defined('_class_rss_php教程')) return;
define('_class_rss_php教程',1);
/**
 
 *  使用说明:
 *  $rss = new rss('redfox','http://111cn.net/',"redfox's blog");
 *  $rss->additem('rss class',"http://www.111cn.net","xxx",date());
 *  $rss->additem(...);
 *  $rss->savetofile(...);
 */

 

 代码如下 复制代码

class rss {
   //public
   $rss_ver = "2.0";
   $channel_title = '';
   $channel_link = '';
   $channel_description = '';
   $language = 'zh_cn';
   $copyright = '';
   $webmaster = '';
   $pubdate = '';
   $lastbuilddate = '';
   $generator = 'redfox rss generator';


   $content = '';
   $items = array();


   function rss($title, $link, $description) {
       $this->channel_title = $title;
       $this->channel_link = $link;
       $this->channel_description = $description;
       $this->pubdate = date('y-m-d h:i:s',time());
       $this->lastbuilddate = date('y-m-d h:i:s',time());
   }


   function additem($title, $link, $description ,$pubdate) {
       $this->items[] = array('titile' => $title ,
                        'link' => $link,
                        'description' => $description,
                        'pubdate' => $pubdate);
   }


   function buildrss() {
       $s = "<!--l version="1.0" encoding="gb2312"--> ";
       // start channel
       $s .= " ";
       $s .= " "
       $s .= "<link />{$this->channel_link} ";
       $s .= "{$this->channel_description} ";
       $s .= "{$this->language} ";
       if (!empty($this->copyright)) {
          $s .= "{$this->copyright} ";
       }
       if (!empty($this->webmaster)) {
          $s .= "{$this->webmaster} ";
       }
       if (!empty($this->pubdate)) {
          $s .= "{$this->pubdate} ";
       }


       if (!empty($this->lastbuilddate)) {
          $s .= "{$this->lastbuilddate} ";
       }


       if (!empty($this->generator)) {
          $s .= "{$this->generator} ";
       }
     
       // start items
       for ($i=0;$iitems),$i++) {
           $s .= " ";
           $s .= " ";
           $s .= "<link />{$this->items[$i]['link']} ";
           $s .= "<!--data[{$thi-->items[$i]['description']}]]> ";
           $s .= "{$this->items[$i]['pubdate']} ";         
           $s .= " ";
       }
    
      // close channel
      $s .= " ";
      $this->content = $s;
   }


   function show() {
       if (empty($this->content)) $this->buildrss();
       header('content-type:text/xml');
       echo($this->content);
   }


   function savetofile($fname) {
       if (empty($this->content)) $this->buildrss();
       $handle = fopen($fname, 'wb');
       if ($handle === false)  return false;
       fwrite($handle, $this->content);
       fclose($handle);
   }
}


?>
同时也可以用网页特效来解析xml文档

//photo_xml类,继承php5的domdocument类

 代码如下 复制代码
class photo_xml extends domdocument
{
    private $root;    //属性
    //构造函数
    public function __construct()
    {
        parent::__construct();
        if (!file_exists("sitecontent.xml"))
        {
            $xmlstr = "<?xml version='1.0' encoding='gb2312'?><bookpages></bookpages>";
            $this->loadxml($xmlstr);
            $this->save("sitecontent.xml");
        }
        else
        {
            $this->load("sitecontent.xml");
        }
    }
   
    //添加图片
    public function addphoto($address,$note)
    {
        $root = $this->documentelement;
        //获取留言消息
       
        $node_address = $this->createelement("page"); //添加<page>标签
        $type=$this->createattribute("src");
        $node_address->appendchild($type);    //添加src的属性
        $type_text=$this->createtextnode($address);
        $type->appendchild($type_text);
        $text= $this->createtextnode(iconv("gb2312","utf-8",$note));
        $node_address->appendchild($text);
        //加入到根结点下
        $root->appendchild($this->appendchild($node_address));
        $this->save("sitecontent.xml");
    }
}

?>

<?php

 代码如下 复制代码
$photo_xml=new photo_xml();
$photo_xml->addphoto('./www.111cn.net/p31.jpg','page31');


?>

$doc = new domdocument('1.0');
// we want a nice output
$doc->formatoutput = true;

 代码如下 复制代码

$root = $doc->createelement('book');
$root = $doc->appendchild($root);

$title = $doc->createelement('title');$title = $root->appendchild($title);

$text = $doc->createtextnode('this is the title');
$text = $title->appendchild($text);

echo "retrieving all the document: ";
echo $doc->savexml() . " ";

echo "retrieving only the title part: ";
echo $doc->savexml($title);

//解析xml实例一
$objDOM = new DOMDocument();
$objDOM->load("xml.xml");
$parent = $objDOM->getElementsByTagName("Product");
foreach( $parent as $value )
  {
    $names = $value->getElementsByTagName("Name");
    $name  = $names->item(0)->nodeValue;
   
    $urls = $value->getElementsByTagName("Url");
    $url  = $urls->item(0)->nodeValue;
   
    $images = $value->getElementsByTagName("Image");
    $image  = $images->item(1)->nodeValue;
  }
 
 //DOMDocument实例二
 
$xml = new DOMDocument();
$xml->load("me.xml");
$postDom = $xml->getElementsByTagName("post");
foreach($postDom as $post){
$title = $post->getElementsByTagName("title");
echo "Id: " . $title->item(0)->attributes->item(0)->nodeValue . "<br />";
echo "Title: " . $title->item(0)->nodeValue . "<br />";
echo "Details: " . $post->getElementsByTagName("details")->item(0)->nodeValue . "<br /><br />";
}
 
?>
xml.xml
<Root>
        <Category>
                <Product>
                        <Name>网页制作教程教程</Name>
                        <Image>
                                <SizeName>Small</SizeName>
                                <Url>http://www.111cn.net</Url>
                        </Image>
                        <Image>
                                <SizeName>Medium</SizeName>
                                <Url>http://www.111cn.net</Url>
                        </Image>
                        <Image>
                                <SizeName>Large</SizeName>
                                <Url>http://www.111cn.net</Url>
                        </Image>
                </Product>
        </Category>
</Root>


me.xm;

<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP XML处理介绍一</title>
<details>详细内容一</details>
</post>
<post>
<title id="2">PHP XML处理介绍二</title>
<details>详细内容二</details>
</post>
<post>
<title id="3">PHP XML处理介绍三</title>
<details>详细内容三</details>
</post>
</phplamp>

在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。

/*
<?xml version='1.0' encoding='utf-8' ?>
<root cityid="0" classid="0" placeid="0" yy="0" mm="0" pg="1" ps教程="20" maxPage="1" num="1" serverIP="58.57.65.195">
<expo ID="3889" cityid="53" city="北京" classid="0" classname="建筑/装潢/五金" place="中国国际展览中心" placeid="0" tm1="2010-6-3" tm2="2010-6-5" title="20会" Address="北
里河路13号">
<![CDATA[2010北京第十五届中件系列]]>
</expo>
</root>

*/

<?php
$url = "http://www.111cn.net/xml.xml";

$dom = new DOMDocument();
$dom->load($url);
$root = $dom->documentElement;
$arr=array();
foreach ($root->childNodes as $item)
{
        if($item->hasChildNodes())
        {
                $tmp=array();
                foreach($item->childNodes as $one)
                {
                        $tmp[$one->tagName]=$one->nodeValue;
                }
               
                $arr[$item->tagName]=$tmp;
        }
}

$jsonStr = json_encode($arr);

var_dump($jsonStr);

/*

*/
?>

[!--infotagslink--]

相关文章

  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • mybatis-plus实体类主键策略有3种(小结)

    这篇文章主要介绍了mybatis-plus实体类主键策略有3种(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-27
  • C#类中static变量用法分析

    这篇文章主要介绍了C#类中static变量用法,实例分析了static变量使用技巧与相关注意事项,需要的朋友可以参考下...2020-06-25
  • PHP 一个完整的分页类(附源码)

    在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,下面我来详细介绍分页类实现程序...2016-11-25
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29