PHP和AJAX的RSS阅读器

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

PHP和AJAX的RSS阅读器

RSS阅读器是用来读取RSS信息

允许快速的RSS浏览新闻和更新




AJAX的RSS阅读器
在AJAX以下例子,我们将展示一个RSS阅读器的内容从RSS是载入网页无需刷新。

在HTML表单
这是HTML网页。它包含一个简单的HTML表格,并链接到一个JavaScript :

<html>
<head>
<script type="text/javascript" src="getrss.js"></script>
</head>
<body>
<form> 
Select an RSS-Feed:
<select onchange="showRSS(this.value)">
<option value="Google">Google News</option>
<option value="MSNBC">MSNBC News</option>
</select>
</form>
<p><div id="rssOutput">
<b>RSS Feed will be listed here.</b></div></p>
</body>
</html>

例如解释-的H TML表单
正如你可以看到, HTML网页上面载有一个简单的HTML表单的下拉框。

作品的形式像这样:

事件触发时,用户选择一个选项在下拉框中
当事件触发的功能要求showRSS ( )被处决。
下面的形式是一个<div>所谓的“ rssOutput ” 。这是作为一个占位符返回的数据showRSS ( )函数。转载请注明来自http://www.111cn.net/wy/yw.html




的JavaScript
JavaScript代码是储存在“ getrss.js ”和相关的HTML文件:

var xmlHttp
function showRSS(str)
 { 
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
 var url="getrss.php"
 url=url+"?q="+str
 url=url+"&sid="+Math.random()
 xmlHttp.onreadystatechange=stateChanged 
 xmlHttp.open("GET",url,true)
 xmlHttp.send(null)
 }

function stateChanged() 
 { 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  { 
  document.getElementById("rssOutput")
  .innerHTML=xmlHttp.responseText 
  } 
 }
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

例如解释
该stateChanged ( )和GetXmlHttpObject职能是一样的PHP的AJAX推荐的篇章。

该showRSS ( )函数

每一次的选择是选择在输入外地执行这一职能如下:

界定了网址(档)传送给服务器
添加一个参数( Q )的网址与选定的选项从下拉框中
添加一个随机数字,以防止服务器使用快取档案
吁请GetXmlHttpObject函数创建一个XMLHTTP物件,并讲述了对象执行的功能要求时stateChanged变化是触发
开幕XMLHTTP物件与特定网址。
发送一个HTTP请求到服务器



PHP页面
网页服务器要求的JavaScript代码是一个PHP文件名为“ getrss.php ” :

<?php
//get the q parameter from URL
$q=$_GET["q"];
//find out which feed was selected
if($q=="Google")
 {
 $xml=("http://news.google.com/news?ned=us&topic=h&output=rss");
 }
elseif($q=="MSNBC")
 {
 $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml");
 }
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//output elements from "<channel>"
echo("<p><a href='" . $channel_link
 . "'>" . $channel_title . "</a>");
echo("<br />");
echo($channel_desc . "</p>");
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i++)
 {
 $item_title=$x->item($i)->getElementsByTagName('title')
 ->item(0)->childNodes->item(0)->nodeValue;
 $item_link=$x->item($i)->getElementsByTagName('link')
 ->item(0)->childNodes->item(0)->nodeValue;
 $item_desc=$x->item($i)->getElementsByTagName('description')
 ->item(0)->childNodes->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
 . "'>" . $item_title . "</a>");
 echo ("<br />");
 echo ($item_desc . "</p>");
 }
?>转载请注明来自http://www.111cn.net/wy/yw.html

载入XML从外部域
       由Kalliban :二零零四年五月十三日
如果您试图载入一个XML的文件,是位于不同的网域您的Flash电影,你最有可能注意到, XML.load ( )函数仅限于XML的文件,都位于相同的网域作为Flash影片。
这意味着你可以不加载XML文件“ http://www.site.com/data.xml ”到Flash影片“ http://www.swfdomain.com/flash.swf ”的XML.load ( )功能。

然而,有一个非常简单的方式解决这个用PHP 。在经历本教程,我建议您看看其他的XML教程在这里kirupa.com 。

好吧,让我们开始吧!

创建的XML
XML的文件我们要利用这个例子将是非常基本的,因为它只是为了演示。虽然,有一件事,绝不能成为包含在XML文件!这是XML声明标记,它看起来像这样:

 <?xml version="1.0" encoding="iso-8859-1"?>

如果该标记是包含在XML文件,它会导致一个PHP解析错误,因为PHP将治疗范围内的一切“ ?和? “作为PHP代码。我将讨论这个问题。
好了,所以XML的文件将是:

<testNode>
  <testChildnode testVar="blah">Test</testChildNode>
</testNode>

只要复制粘贴到记事本,网页或任何其他程序能够编辑XML数据。

将档案储存为test.xml 。


创建的PHP
PHP的文件也将非常简单。我们将利用包括( )函数来加载XML的文件到的PHP脚本。

<?php
include($_GET['xmlsource']);
?>

为了使它有点更具活力,我们将指派路径的XML文件,并使用GET方法。因此,当我们加载PHP的Flash影片,它看起来就像这样:

loadXML.php ? xmlsource = test.xml

保存的PHP脚本作为loadXML.php 。

PHP XML Expat Parser

内置的外籍分析器能够处理XML文档在PHP 。 
 

XML是什么?
XML是用来描述数据并把重点放在什么样的数据是。一个XML文件描述的结构数据。

在XML中,没有预先确定的标记。你必须定义自己的标记。

如果您想了解更多有关XML ,请访问我们的XML指南。 
 

什么是外籍人士?
要阅读和更新-创建和操纵-一个XM L文件,您需要一个XM L解析器。

有两个基本类型的XML解析器:

树为基础的剖析:这分析器转换XML文件成一个树状结构。分析了整个文件,并提供进入树的内容。例如:文档对象模型( DOM )
基于事件的剖析:观XML文件的一系列活动。当某一特定事件发生时,它要求一个函数来处理它
该外籍分析器是一个基于事件的剖析。

基于事件的解析器重点内容的XML文件,而不是其结构。正因为如此,基于事件的剖析器可以存取数据速度快于树为基础的解析器。

看看下面的XML部分:

<from>Jani</from>

一种基于事件的剖析报告的XML上述一系列三项活动:

开始元素:从
资料,一节开始,价值:贾尼
关闭内容:从
在上述范例的XML包含格式良好的XML 。然而,例如不能有效的XML ,因为没有任何文档类型定义( DTD的)与此相关。

然而,这并没有差异时,使用外籍分析器。外籍人士是一个非验证剖析,并忽略任何DTDs 。

作为一个基于事件的,非验证XML分析器,外籍速度快,小,适合PHP的Web应用。

注: XML文件必须有充分的形成或外籍人士将产生一个错误。




安装
外籍人士的XML解析器职能是PHP核心的一部分。没有安装即可使用这些功能。




一个XML文件
XML档案下文将用于我们的榜样

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
 

初始化XML解析器
我们要初始化XML解析器在PHP中,确定了不同的处理XML的事件,然后解析XML文件。

例如

<?php
//Initialize the XML parser
$parser=xml_parser_create();
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
  {
  switch($element_name)
    {
    case "NOTE":
    echo " Note <br />";
    break; 
    case "TO":
    echo "To: ";
    break; 
    case "FROM":
    echo "From: ";
    break; 
    case "HEADING":
    echo "Heading: ";
    break; 
    case "BODY":
    echo "Message: ";
    }
  }
//Function to use at the end of an element
function stop($parser,$element_name)
  {
  echo "<br />";
  }
//Function to use when finding character data
function char($parser,$data)
  {
  echo $data;
  }
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
while ($data=fread($fp,4096))
  {
  xml_parse($parser,$data,feof($fp)) or 
  die (sprintf("XML Error: %s at line %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
  }
//Free the XML parser
xml_parser_free($parser);
?>
 
输出结果如.
 
Note 
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
 

它的原理就是:

初始化XML分析器与xml_parser_create ( )函数
创建职能,使用不同的事件处理程序
新增xml_set_element_handler ( )函数来指定哪些功能将被处死时,解析器遇到开幕式和闭幕式标签
新增xml_set_character_data_handler ( )函数来指定哪些功能将执行时遇到的分析器字符数据
解析文件“ test.xml ”的xml_parse ( )函数
如果在一个错误,新增xml_error_string ( )函数来转换XML错误的文字说明
呼叫xml_parser_free ( )函数来释放分配的内存与xml_parser_create ( )函数

转载请注明来自:  www.111cn.net/phper/php.html  

 

PHP XML DOM

内置的DOM解析器可以处理XML文档在PHP 。  

这里是什么?
的W3C DOM提供了一套标准的对象为HTML和XML文件,以及一个标准的接口用于访问和操纵它们。

的W3C DOM分为不同部分(核心, XML和HTML )和不同层次( 1/2/3级的DOM ) :

*核心的DOM 定义一套标准的对象结构的任何文件
*的XML的DOM 定义一套标准的对象的X ML文件
*的HTML的DOM 定义一套标准的对象为H TML文件

如果您想了解更多有关的XML的DOM ,请访问我们的XML的DOM教程。  

XML解析
要阅读和更新创建和操纵一个XM L文件,您需要一个XM L解析器。

有两个基本类型的XML解析器:

树为基础的剖析:这分析器转换XML文件成一个树状结构。分析了整个文件,并提供进入树要素
基于事件的剖析:观XML文件的一系列活动。当某一特定事件发生时,它要求一个函数来处理它
在DOM解析器是一个树为基础的剖析。

看看下面的XML文件部分:

<?xml version="1.0" encoding="ISO88591"?>
<from>Jani</from>

The XML DOM sees the XML above as a tree structure:

  • Level 1: XML Document
  • Level 2: Root element: <from>
  • Level 3: Text element: "Jani"

 

安装
的DOM XML解析器职能是PHP核心的一部分。没有安装即可使用这些功能。




一个XML文件
XML档案下文将用于在我们的例子:

<?xml version="1.0" encoding="ISO88591"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

负载和输出的XML
我们要初始化XML分析器,载入XML和输出:

例如

 

$xmlDoc = new DOMDocument(); $xmlDoc>load("note.xml"); print $xmlDoc>saveXML(); ?>

 

输出为.

Tove Jani Reminder Don't forget me this weekend!

如果您选择“查看源文件”在浏览器窗口中,您会看到下面的HTML :

 

<?xml version="1.0" encoding="ISO88591"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
 

上面的例子中创建的DOMDocument对象并加载XML从“ note.xml ”到它。

然后saveXML ( )函数来把内部的XML文件到一个字符串,这样我们就可以打印出来。




通过XML的循环
我们要初始化XML分析器,负载的XML ,并通过回路的所有要素<note>内容:

例如

 

<?php
$xmlDoc = new DOMDocument();
$xmlDoc>load("note.xml");
$x = $xmlDoc>documentElement;
foreach ($x>childNodes AS $item)
  {
  print $item>nodeName . " = " . $item>nodeValue . "<br />";
  }
?>
 
结果为.
 
#text = 
to = Tove
#text = 
from = Jani
#text = 
heading = Reminder
#text = 
body = Don't forget me this weekend!
#text =
 

在上面的例子中看到,有空白文本节点之间的每个元素。

当XML的产生,往往含有白色空间之间的节点。对的XML DOM解析器把这些作为普通的内容,

如果你不知道,他们有时会造成问题。

转载请注明来自:  www.111cn.net/phper/php.html  

PHP SimpleXML

SimpleXML处理最常见的XML任务和叶片,其余为其他扩展名。  

SimpleXML是什么?
SimpleXML是新的PHP 5 。这是一个简单的方法获得一个要素的属性和文字,如果您知道XML文件的布局。

相比到DOM或外籍分析器, SimpleXML只需几行代码读取文本数据从一个组成部分。

SimpleXML转换XML文档到一个对象,像这样:

内容-转换为单一属性S impleXMLElement对象。当有一个以上的元素一个层次上,他们放入一个数组
属性-访问使用关联数组,如果指数对应的属性名称
元数据-数据从文本的内容转换为字符串。如果一个要素有一个以上的文本节点,他们将被安排在该命令他们发现
SimpleXML速度快,易于使用的表演时,基本任务包括:

读XML文件
提取数据从XML字符串
编辑文本节点或属性
然而,当先进的处理XML的,如名称,你是最好的外籍人士使用分析器或XML的DOM 。  

安装
从PHP 5.0 , SimpleXML职能是PHP核心的一部分。没有安装即可使用这些功能。  

用SimpleXML
下面是一个XML文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

我们希望输出的元素名称和数据的XML档案以上。

这是做什么:

加载XML文件
获取的名字的第一个元素
创建一个循环,将触发每个孩子节点,使用儿童( )函数
输出元素的名称和数据,每个子节点
例如

 

<?php
$xml = simplexml_load_file("test.xml");
echo $xml->getName() . "<br />";
foreach($xml->children() as $child)
  {
  echo $child->getName() . ": " . $child . "<br />";
  }
?>
 
输出结果为
 
note
to: Tove
from: Jani
heading: Reminder
body: Don't forget me this weekend!
 
转载请注明来自:  www.111cn.net/phper/php.html
[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

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

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • 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
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法

    这篇文章主要介绍了JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法,涉及JavaScript页面元素定时滚动操作及ajax调用实现技巧,需要的朋友可以参考下...2016-04-19
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • jQuery+ajax简单实现文件上传的方法

    这篇文章主要介绍了jQuery+ajax简单实现文件上传的方法,结合实例形式简单分析了jQuery基于ajax的post方法进行文件传输及asp.net后台处理技巧,需要的朋友可以参考下...2016-06-12
  • jquery Ajax实现Select动态添加数据

    这篇文章主要为大家详细介绍了jquery Ajax实现Select动态添加数据的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-06-15
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • Qt 使用Poppler实现pdf阅读器的示例代码

    下面小编就为大家分享一篇Qt 使用Poppler实现pdf阅读器的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • js实现ajax的用户简单登入功能

    这篇文章主要为大家详细介绍了js实现ajax的用户简单登入功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-19
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • jquery+Ajax实现简单分页条效果

    这篇文章主要为大家详细介绍了jquery+Ajax实现简单分页条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-17
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • jQuery UI结合Ajax创建可定制的Web界面

    这篇文章主要为大家详细介绍了jQuery UI结合Ajax创建可定制的Web界面,如何利用Ajax和jQuery UI创建具有各种定制功能的高度可定制的UI,感兴趣的小伙伴们可以参考一下...2016-06-24