结合使用PHP和RSS

 更新时间:2016年11月25日 16:12  点击:1717

内容摘要:RSS 聚合最近非常流行,因此至少对 RSS 及其工作方式有所了解是一名 PHP 开发人员的迫切需要。本文介绍了 RSS 基础知识、RSS 众多用途中的一些用途、如何使用 PHP 从数据库创建 RSS 提要,以及如何使用 XML_RSS 模块读取现有 RSS 提要并将其转换为 HTML。


  什么?您没听说过 RSS?

 

  RSS 聚合是最常见的 TLA(三字母缩写词)之一。RSS 作为缩写词具有多种含义,但是当前的标准含义是:真正简单的聚合。这是对这一极为常见、极为有用的标准的最新解释。

  回想 Internet 早期,一个称为 Pointcast 的软件将数据 推送 到用户计算机上的屏幕保护应用程序上,来提供各种新闻更新。最终,浏览器开发商(例如 Netscape 和 Microsoft)创建了类似这种非常流行的服务的东西。Netscape 开发了接受程度最高的变体,此变体后来被发布到 Internet 开发环境中,并最终发展成了现在的 RSS。

  RSS 将最近更新的信息分发给许多接收者,非常类似广播系统。如果您拥有大量的用户,那么 RSS 提要就像灯塔一样吸引您的用户回来查看更新。因为 RSS 提供了一种急需的维持用户注意力的方法,所以 RSS 越来越流行并为越来越多的内容提供者所使用就没什么好奇怪的了。

  当您看到图 1 中所示的图标时,您就可以确定此站点提供 RSS 提要。事实上,此图标是表示一个站点针对内容更新提供 RSS 服务的标准图标。图标中的曲线代表无线电波,象征着 RSS 提要的广播本质。

  图 1. RSS 标准图标

  

  RSS 应用程序

  相当多的应用程序(其中许多是免费的)能够阅读 RSS 提要,其中许多允许用户聚合提要。聚合特性甚至允许用户进一步改进所收到内容的数量和性质。每种阅读器都拥有不同的特性,旨在帮助管理来自 Internet 的难以置信的信息量。

  Mozilla 公司的 Thunderbird 和 Firefox、Microsoft 公司的 Internet Explorer 7 和即将推出的 Office 版本以及许多其他产品是最接近您的搜索引擎的一些例子。在这么多种获取和阅读提要的方法中,您应该可以找到适合您的方法。当然,除非您是一位眼光挑剔的软件开发人员,希望编写您自己的程序!本文马上就要对此进行介绍!

 

  我如何使用 RSS?

  您的站点包含您希望公布给大众的内容,这是您将内容发布到 Internet 的首要原因。如果很多用户知道您的站点和内容,他们会每天回来查看更新吗?恐怕不会。在您经常访问的站点中,您会每天访问它们来检查更新吗?恐怕不会。这就是 RSS 产生的原因。

  对于您的用户来说,RSS 可能是一个巨大的获益,当他们认为您的站点上列出的观点或新闻有价值时尤其如此。用户无需频繁返回您的站点,即可准确了解您进行的更新或添加的内容,从而使用户能够节省时间和精力,同时也不会错过任何更新!

  如果您整合 RSS 提要来支持您自己站点的内容聚合,那么生成内容不是问题。如果您从提要中拉出数据并将其包括在您的站点中,那么只需很少的时间投资就能为您的站点添加大量的内容。

<?php
得到PHP中最后一个字符

$str = " JhlIsHero ";
$var = trim($str);
$len = strlen($var)-1;
echo $var{$len};
?>

得到PHP一个字符串的最后一个字符


 
<?
$arr=getimagesize("images/album_01.gif");
echo $arr[3];
$strarr=explode(""",$arr[3]);
echo $strarr[1];
?>
<HTML>
<HEAD>
<TITLE>演示图片等比例缩小</TITLE>
<script>
function Wa_SetImgAutoSize(img)
{
//var img=document.all.img1;//获取图片
var MaxWidth=200;//设置图片宽度界限
var MaxHeight=100;//设置图片高度界限
var HeightWidth=img.offsetHeight/img.offsetWidth;//设置高宽比
var WidthHeight=img.offsetWidth/img.offsetHeight;//设置宽高比
alert("test"+img.offsetHeight+img.fileSize);
if(img.offsetHeight>1) alert(img.offsetHeight);
if(img.readyState!="complete"){
 return false;//确保图片完全加载
}
if(img.offsetWidth>MaxWidth){
img.width=MaxWidth;
img.height=MaxWidth*HeightWidth;
}
if(img.offsetHeight>MaxHeight){
img.height=MaxHeight;
img.width=MaxHeight*WidthHeight;
}
}
function CheckImg(img)
{
 var message="";
 var MaxWidth=1;//设置图片宽度界限
 var MaxHeight=1;//设置图片高度界限
 
 if(img.readyState!="complete"){
  return false;//确保图片完全加载
 }
 if(img.offsetHeight>MaxHeight) message+="r高度超额:"+img.offsetHeight;
 if(img.offsetWidth>MaxWidth) message+="r宽度超额:"+img.offsetWidth;
 if(message!="") alert(message);
}
</script>
</HEAD>
<BODY>
<img src="images/frequency.gif" border=0 id="img1" onload="CheckImg(this);">
<br>
<input id=inp type="file" onpropertychange="img1.src=this.value;">
</BODY>
</HTML>
 

<?php
class CreateHtml
{
 function mkdir( $prefix= ''''article'''' )
 {
  $y = date(''''Y'''');
  $m = date(''''m'''');
  $d = date(''''d'''');
  $p=DIRECTORY_SEPARATOR;
  $filePath=''''article''''.$p.$y.$p.$m.$p.$d;
  $a=explode($p,$filePath);
  foreach ( $a as $dir)
  {
   $path.=$dir.$p;
   if(!is_dir($path))
   {
    //echo ''''没有这个目录''''.$path;
    mkdir($path,0755);
   }
  }
  return $filePath.$p;  
 }
 function start()
 {
  ob_start();
 }
 function end()
 {
  $info     = ob_get_contents();
  $fileId   = ''''12345'''';
  $postfix  = ''''.html'''';
  $path     = $this->mkdir($prefix= ''''article'''');
  $fileName = time().''''_''''.$fileId.$postfix;
  $file=fopen($path.$fileName,''''w+'''');
  fwrite($file,$info);
  fclose($file);
  ob_end_flush();
 }
}
?>
<?php
$s=new CreateHtml();
$s->start();
?>
<html>
<body>
asdfasdfasdfasdfasdfasdfasdfasdfasdf<br>
adfasdfasdf<br>
</body>>
</html>
<?php
$s->end();
?>
 


<?php
/*
  分页类
  design by xqbar
  qq:174171262
  email:wxddong@163.com
  blog:http://www.xqbar.com
  考虑输入参数
  size(每页记录数目)
  url(连接地址)
  style(分页样式)
  sql(运行语句)
*/
class page{
   public  $sql='';//分页sql语句
   public  $url='';//分页传递过来的下页地址,可以另外加参数用来搜索使用
   public  $size=10;//默认每页显示数据10条
   public  $style=1;//默认分页显示风格
   private $totalsize=0;//数据总数
   private $totalpage=0;//总页数
   private $page=1;//当前页
   private $link;//数据库连接点
   private $flag=false;//初始化标志点
   private $offset=0;//分页偏移值 limit $offset,$size;
   //构造函数 传递数据库连接点
   function __construct($link){
      $this->page=(isset($_GET['page'])&&!empty($_GET['page'])&&(int)($_GET['page']))?(int)$_GET['page']:1;//获取当前page参数值,确定当前是第几分页
      $this->link=$link;
   }
   //析构函数
   function __destruct(){
  @mysql_close($this->link);
  $this->link=NULL;
   }
  //构造函数兼顾<php5
   function page($link){
     $this->__construct($link);
   }
   //初始化
   function init(){
     if(empty($this->sql)){$this->halt("错误警告:<font color='red'>sql语句不能为空!</font>");exit();}//判断sql是否存在
  $this->sql=str_replace(sql);//">'@_',DB_PREFIX,$this->sql);//替换sql中的表前缀
     $this->size=($this->size<=0)?10:$this->size;//初始每页显示数据条数
  $this->page=($this->page<1)?1:$this->page;//当前页码值
     #大于第一页后优化查询总记录数
  //这里我使用了第一次浏览分页时查询数据库得出数据库总数,点下页时传递并不再查询数据库,数据量多时可能会节省些(自己想的)
  if($this->page==1&&!isset($_GET['tsize'])){
     sql">$result=@mysql_query($this->sql);
     $this->totalsize=@mysql_num_rows($result);
     @mysql_free_result($result);
  }else{
       //上面的问题唯一缺点就是用户手动在地址栏更改了tsize值后分页将不再正确
     $this->totalsize=(int)$_GET['tsize'];
    }
     $this->url=(empty($this->url))?$_SERVER['PHP_SELF'].'?tsize='.$this->totalsize:$this->url.'&tsize='.$this->totalsize;//传递totalsize给下一页
  $this->totalpage=ceil($this->totalsize/$this->size);//获取总页数
  $this->page=($this->page>$this->totalpage)?$this->totalpage:$this->page;
  $this->offset=($this->page-1)*$this->size;//获取偏移值
   }
  //查询数据库返回结果给二维数组
   function fetch_array($result_type=MYSQL_BOTH){
     if(!$this->flag){$this->init();$this->flag=true;}
     if($this->totalsize<=0){return NULL;}
  $this->sql.=" limit $this->offset,$this->size";
  sql,$this->link">$result=@mysql_query($this->sql,$this->link);
  while($row=mysql_fetch_array($result,$result_type)){$rows[]=$row;}
  @mysql_free_result($result);
  return $rows;
   }
  //获取总数据数
   function getsize(){
     if(!$this->flag){$this-init();$this->flag=true;}//判断是否已经在此之前初始化过,是则直接返回 (下同)
     return $this->totalsize;
   }
//获取总页数
   function getpage(){
     if(!$this->flag){$this-init();$this->flag=true;}
     return $this->totalpage;
   }
//根据传入参数输出分页链接
   function outpage(){
     if(!$this->flag){$this-init();$this->flag=true;}
  switch($this->style){
    #1 第x页 共x页 首页 上一页 下一页 尾页 x条/页 共x页
    case 1:
           $pagehtml="<span class='page'>第<i>{$this->page}</i>页 共<i>{$this->totalpage}</i>页";
     $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>";
           $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":" <a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>";
     $pagehtml.=" 共<i>{$this->totalsize}</i>条</span>";
           break;
    #1 首页 上一页 下一页 尾页 x条/页 共x页
    case 2:
           $pagehtml="<span class='page'>";
     $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>";
           $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":" <a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>";
     $pagehtml.=" 共<i>{$this->totalsize}</i>条</span>";
           break;
    #2 1 2 3 4 5
    case 3:
           $offset=(ceil($this->page/10)-1)*10;
     $pagehtml="<span class='page'>";
     if($offset!=0){$pagehtml.="<a href='{$this->url}&page=1'>|<<</a> <a href='{$this->url}&page=".($this->page-1)."'><<</a>";}
     for($i=1;$i<=10;$i++){
       $n=$i+$offset;
       if($n>$this->totalpage){break;}
       if($n==$this->page){$pagehtml.=" <a href='{$this->url}&page=$n'><i>$n</i></a> ";}
       else{$pagehtml.=" <a href='{$this->url}&page=$n'><b>$n</b></a> ";}
     }
     if($n<$this->totalpage){$pagehtml.=" <a href='{$this->url}&page=".($this->page+1)."'>>></a> <a href='{$this->url}&page=$this->totalsize'>>>|</a>";}
     unset($offset,$i,$n);
           break;   
    #1
    default:
           $pagehtml="第{$this->page}页 共{$this->totalpage}页";
     $pagehtml.=($this->page==1)?" 首页 上一页":" <a href='{$this->url}&page=1'>首页</a> <a href='{$this->url}&page=".($this->page-1)."'>上一页</a>";
           $pagehtml.=($this->page==$this->totalpage)?" 下一页 尾页":"  <a href='{$this->url}&page=".($this->page+1)."'>下一页</a> <a href='{$this->url}&page={$this->totalpage}'>尾页</a>";
           break;   
  }
    return $pagehtml;
   }
//错误输出
   function halt($msg){
  echo "<html>";
  echo "<head>";
  echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\r\n";
  echo "<title>Error</title>";
  echo "</head>";
  echo "<body><p style='line-helght:150%;font-size:10pt'>";
  echo $msg;
  echo "</p></body>";
  echo "</html>";
}
}
?>

 

<?php
require_once('mysql.class.php');
require_once('page.class.php');
$db=new mysql();
$link=$db->open();
#定义sql和url
$sql='select * from @_info';(@_是我的表定义前缀在传入类后被替换掉)
$url='';
$mypage=new page($link);
$mypage->size=10;
$mypage->style=3;
$mypage->url=$url;
$mypage->sql=$sql." order by id desc";
$ls=$mypage->fetch_array(MYSQL_ASSOC);//得到返回的结果
if(count($ls)==0){
   echo '无结果';
}else{
foreach($ls as $value){
    echo $value['title'];
}
//分页码
echo $mypage->outpage();
}
?>

[!--infotagslink--]

相关文章

  • Windows VPN服务器配置图文教程 超详细版

    VPN可以虚拟出一个专用网络,让远处的计算机和你相当于处在同一个局域网中,而中间的数据也可以实现加密传输,用处很大,特别是在一些大公司,分公司处在不同的区域。...2016-01-27
  • 解决执行maven命令时提示Process terminated的问题

    这篇文章主要介绍了解决执行maven命令时提示Process terminated的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25
  • PS滤镜里为什么没有素描?PS CS6素描滤镜在哪?

    我们在作图的时候需要用到“素描”滤镜,但是点开滤镜选项就是找不到。该怎么快速找到“素描”滤镜呢?请往下看。 1、点开滤镜选项时,发现没有素描这一项。2、别急,我...2017-01-22
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • Cloudflare国内自选IP节点整理收录

    一般来说为了达到隐藏自身 IP,我们都会选择一些 CDN 服务,目前用的最多的免费 CDN 是 Cloudflare。但是正常情况下 Cloudflare 是不能自己选择IP,有时候分配给我们的 IP 可能表现不佳,也只能将就着用。但是我们都希望可以用上 CF 比较快的 IP。那么自选IP,就显得很必要了。...2022-09-23
  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • php file_get_contents 设置代理抓取页面示例

    file_get_contents函数在php中可以直接打开本地文件也可以直接抓取远程服务器文件,如果简单的采集我们可以使用file_get_contents直接来操作,如果有防采集我们可能需要...2016-11-25
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • mybatis-plus 表名添加前缀的实现方法

    这篇文章主要介绍了mybatis-plus 表名添加前缀的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-26
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • iOS APP h5快捷程序 .mobileconfig的生成

    1.从APP Store 下载Apple Configurator 2从一个管理点管理所有iOS设备应用程序,文档和配置文件。想要确保您的所有家庭成员在其每台iOS设备上都有类似的应用和文档,管理日益增...2021-12-23
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • mybatis-plus 返回部分字段的解决方式

    这篇文章主要介绍了mybatis-plus 返回部分字段的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-02
  • Redis连接池配置及初始化实现

    这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • mybatis的Configuration详解

    这篇文章主要介绍了mybatis的Configuration详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15