以前因为做学校论坛的需要,曾经写过一个读取shou论坛rrs的一段php,写出来以供大家参考
php
// 下面就是定义函数来提取数据:
// 处理开始标记的属性指
// $attrs是一个多维数组,键值为属性名, 值就是该属性的值
function startelement( $parser , $element_name , $attrs ){
global $temp , $current_tag ;
$current_tag = $element_name ;
switch ( $element_name ){
case ' item ' :
echo '' ;
break ;
default :
break ;
}
}
// $current_tag告诉我们正在处理的标记,我们随后会在characterdata函数中使用
function endelement( $parser , $element_name , $attrs ){
global $temp , $current_tag ;
switch ( $element_name ){
case ' item ' :
return_page( $temp );
$temp = '' ;
break ;
default :
break ;
}
}
// 传送给此函数的是元素间的数据
// 例如,对
title here,$data就等于'title here'
function characterdata( $parser , $data ){
global $current_tag , $temp , $catid ;
switch ( $current_tag ){
case ' title ' :
$temp [ ' title ' ] = $data ;
$current_tag = '' ;
break ;
case ' link ' :
$temp [ ' url ' ] = $data ;
$current_tag = '' ;
break ;
case ' author ' :
$temp [ ' author ' ] = $data ;
$current_tag = '' ;
case ' description ' :
$temp [ ' description ' ] = $data ;
$current_tag = '' ;
default :
break ;
}
}
?>
php
function return_page(){
global $temp ;
echo ' o ' . $temp [ ' title ' ] . '
' ;
}
// 分析的内容,即rrs的未知,可以是网络位置,也可以是文件
$xml_file = ' http://club.sohu.com/list-70th-0-0.xml ' ;
// 定义字符集,默认是utf-8
//$type = 'utf-8';
// 建立解析器
$xml_parser = xml_parser_create ();
// 设置解析选项
//xml_parser_set_option($xml_parser, xml_option_case_folding, true);
//xml_parser_set_option($xml_parser, xml_option_target_encoding, 'utf-8');
// 告诉php发现元素时要调用什么函数
// 这些函数同时也处理元素的属性
xml_set_element_handler ( $xml_parser , ' startelement ' , ' endelement ' );
// 告诉php对字符数据调用什么函数
xml_set_character_data_handler ( $xml_parser , ' characterdata ' );
if ( ! ( $fp = fopen ( $xml_file , ' r ' ))) {
die ( 因网络问题,暂时无法获得数据,请稍候刷新再试 );
}
// 通过循环来解析整个文件
while ( $data = fread ( $fp , 1024 ))
{
xml_parse ( $xml_parser , $data , feof ( $fp ));
}
fclose ( $fp );
xml_parser_free ( $xml_parser );
?>
另外可以加一段,用来预载网页的javascript的脚本
script >
script >
style >
sohu论坛 b > font >
正在加载请稍等 … … font > td >
tr >
table >