111 lines
2.4 KiB
PHP
111 lines
2.4 KiB
PHP
<?php
|
|
// Stuff for RDF parsing - based on code originally from
|
|
// http://www.phpbuilder.com/columns/joe20000907.php3
|
|
|
|
function startElement($parser, $name, $attrs=''){
|
|
|
|
global $open_tags, $current_tag, $initem, $index;
|
|
$current_tag = $name;
|
|
|
|
switch($name){
|
|
case 'ITEM':
|
|
$initem=1;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
function endElement($parser, $name, $attrs=''){
|
|
|
|
global $close_tags, $current_tag, $initem, $index;
|
|
|
|
switch($name){
|
|
case 'ITEM':
|
|
$index++;
|
|
$initem = 0;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
function characterData($parser, $data) {
|
|
|
|
global $current_tag, $initem, $links, $titles, $channelurl, $channeltitle, $index;
|
|
switch($current_tag){
|
|
case 'TITLE':
|
|
if (!$initem && chop($data) != "") {
|
|
$channeltitle = $data;
|
|
}
|
|
else {
|
|
$titles[$index] = $data;
|
|
}
|
|
$current_tag = '';
|
|
break;
|
|
|
|
case 'LINK':
|
|
if ($initem) {
|
|
$links[$index] = $data;
|
|
}
|
|
else {
|
|
$channelurl = $data;
|
|
}
|
|
$current_tag = '';
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
function grab_headlines($xml_file) {
|
|
global $index, $channeltitle, $channelurl, $links, $titles;
|
|
|
|
$index=0;
|
|
|
|
$xml_parser = make_xml_parser("characterData", "startElement","endElement");
|
|
|
|
//$xml_parser = xml_parser_create("UTF-8");
|
|
//xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
|
|
//xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
|
|
//if (!xml_set_element_handler($xml_parser, 'startElement','endElement')){
|
|
// die("Failed to set element handler!\n");
|
|
// }
|
|
//xml_set_character_data_handler($xml_parser, 'characterData');
|
|
|
|
|
|
if (!($fp = fopen($xml_file, 'r'))) {
|
|
die("Could not open $xml_file for parsing!\n");
|
|
}
|
|
|
|
|
|
// loop through the file and parse baby!
|
|
while ($data = fread($fp, 4096)) {
|
|
if (!($data = utf8_encode($data))) {
|
|
echo 'ERROR'."\n";
|
|
}
|
|
|
|
if (!xml_parse($xml_parser, $data, feof($fp))) {
|
|
die(sprintf( "XML error: %s at line %d\n\n",
|
|
xml_error_string(xml_get_error_code($xml_parser)),
|
|
xml_get_current_line_number($xml_parser)));
|
|
}
|
|
}
|
|
//if (sizeof($titles) > $limit
|
|
//Output the title of the Channel ($channelname, $channelurl)
|
|
print"<p class=\"menusubhead\"><a href=\"$channelurl\">$channeltitle</a></p>\n";
|
|
//Output the links ($links[x], $titles[x])
|
|
|
|
for ($count=0;$count<$index;$count++) {
|
|
if ($links[$count] == "" || $links[$count] == "\n") {
|
|
$links[$count] = $channelurl;
|
|
}
|
|
print"<p class=\"menuoption\"><a href=\"$links[$count]\" class=\"linkurl\">$titles[$count]</a>\n";
|
|
}
|
|
xml_parser_free($xml_parser);
|
|
}
|
|
|
|
?>
|