简体   繁体   中英

Convert PHP output to XML - creating RSS feed

Current code gives me output to "li", and I want to adjust the output to be in valid XML so I can create RSS feed from that list. Any advice?

Here is my code so far:

<?php
session_start();
mb_internal_encoding( 'UTF-8' );
require_once('../config.php');
require_once('../dbconnect.php');
echo ' <div class="tagsz clearfix"> ';
echo "<ul id='mytags_ara'>";
echo "<h2 class='title'>English Trends</h2>";
echo ' <div class="tagsz clearfix"> ';
 echo "<ul id='mytags_en'>";
 $query = "SELECT hashtag, sum(count) as total FROM `trending_topics` WHERE lang=0   and  hashtag != '' and date >= date_sub(left(now(), 10), interval 1 day) group by hashtag      order by total desc";
  $res = mysql_query($query);
 $index = 0;
 $hashtags = null;
 while($row = mysql_fetch_assoc($res) ) {
 $hashtag = $row['hashtag'];
 if( strtolower($hashtag) != 'newnew' && strtolower($hashtag) != 'new' && strtolower  ($hashtag) != 'more' )  {
 echo "<li><a class='size".$index."'".$hashtag."'>#".$hashtag."</a></li>";
 $index++;
 }
 if($index==6) break;}
 echo "</ul>";
 echo "</div>";
 ?>

This may or may not help you out, but this was the code I used to use to generate an Atom feed:

<?php
    define('DS', DIRECTORY_SEPARATOR);
    define('ROOT', dirname(dirname(__file__)));
    define('HOST', 'http://' . $_SERVER['HTTP_HOST'] . dirname( $_SERVER['PHP_SELF'] ) );

    function publishAtom() {
            /*
            My data entities had these fields:
            - title
            - category
            - permalink (a URL-safe version of the title)
            - timestamp
            - lastupdated
            - abstract

            You'll need to adjust the code below to match your entities.
            */

            # get the data
            $rows = //<<insert your data-gathering-code here>> -> needs to be an array of your entities;


            $feed_title = "Atom Feed";
            $feed_subtitle = "Get all our newest entries when you subscribe to the feed.";
            $site_domain = "http://yourdomain.com";
            $author_name = "Your Name";
            $author_email = "yourname@yourdomain.com";

            $feed = '<?xml version="1.0" encoding="utf-8"?>
            <feed xmlns="http://www.w3.org/2005/Atom">
                <title>' . $feed_title . '</title>
                <subtitle>' . $feed_subtitle . '</subtitle>
                <link href="' . $site_domain . '/atom.xml" rel="self" />
                <link href="' . $site_domain . '" />
                <updated>' . date('c') . '</updated>
                <author>
                    <name>' . $author_name . '</name>
                    <email>' . $author_email . '</email>
                </author>
                <id>tag:' . str_replace( "http://", '', $site_domain ) . ',2012:feed</id>';

            # Get the entries


            foreach( $rows as $row ) {  
                $feed .= '<entry>
                    <title>' . $row->title . '</title>
                    <link href="' . strtolower( $site_domain . DS . $row->category . DS . $row->permalink ) . '" />';

                    $date= date( 'Y-m-d', strtotime( $row->timestamp ) );
                    $uuid = str_replace( "http://", '', $site_domain ) . ',' . $date . ':' . $row->permalink;

                $feed .= '<id>tag:' . $uuid . '</id>';

                if( isset( $row->lastupdated ) ) {
                    $feed .= '<updated>' . date( 'c', strtotime( $row->lastupdated ) ) . '</updated>';
                }
                else {
                    $feed .= '<updated>' . date( 'c', strtotime( $row->timestamp ) ) . '</updated>';
                }

                $feed .= '<summary>Entry for ' . $date . '</summary>
                    <content type="xhtml" xml:lang="en">
                        <div xmlns="http://www.w3.org/1999/xhtml">' . $row->abstract . '</div>
                    </content>
                </entry>';
            }

            $feed .= "</feed>";

            $path = ROOT . DS . "atom.xml";
            $filenum=fopen( $path, "w" );
            fwrite( $filenum, $feed );
            fclose( $filenum );
        }
    }

    # call this function wherever is relevent for you
    publishAtom();
?>

It should give you an idea of how to do this manually. HTH.

Have you tried SimpleXML? SimpleXML is a great package and makes it really easy to parse and create XML style documents.

For your specific case, try this: http://snipplr.com/view/61231/

EDIT: Here is the complete documentation of SimpleXML: http://in.php.net/simplexml

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM