Usort Feeds By Relevance

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ojsimon
    New Member
    • May 2007
    • 59

    Usort Feeds By Relevance

    Hi
    I Am using Simplepie to display some rss feeds, currently it displays them in date and time order but i want it to display them in relevance order by using a usort function.
    here is the code for the page

    [PHP]<?php
    /*************** *************** *************** *************** ********
    MULTIFEEDS TEST PAGE

    Nothing too exciting here. Just a sample page that demos integrated
    Multifeeds support as well as cached favicons and perhaps a few other
    things.

    Lots of this code is commented to help explain some of the new stuff.
    Code was tested in PHP 5.2.2, but *should* also work with earlier
    versions of PHP, as supported by SimplePie (PHP 4.1).

    *************** *************** *************** *************** ********/

    // Include the SimplePie library, and the one that handles internationaliz ed domain names.
    require_once('. ./simplepie.inc') ;
    require_once('. ./idn/idna_convert.cl ass.php');

    // Initialize some feeds for use.
    $feed = new SimplePie();
    $feed->set_feed_url(a rray(
    'http://rss.news.yahoo. com/rss/topstories',
    'http://news.google.com/?output=atom',
    'http://rss.cnn.com/rss/cnn_topstories. rss'
    ));

    // When we set these, we need to make sure that the handler_image.p hp file is also trying to read from the same cache directory that we are.
    $feed->set_favicon_ha ndler('./handler_image.p hp');
    $feed->set_image_hand ler('./handler_image.p hp');

    // Initialize the feed.
    $feed->init();



    // Make sure the page is being served with the UTF-8 headers.
    $feed->handle_content _type();



    // Begin the (X)HTML page.
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt d">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>Multifee ds Test page</title>
    <link rel="stylesheet " href="../demo/for_the_demo/simplepie.css" type="text/css" media="screen" title="SimplePi e Styles" charset="utf-8" />
    <style type="text/css">
    div#site {
    width:600px;
    }
    span.footnote {
    white-space:nowrap;
    }
    h1 {
    line-height:1.4em;
    }
    h4 {
    padding-left:20px;
    background-color:transpare nt;
    background-repeat:no-repeat;
    background-position:0 1px;
    }
    .clearBoth {
    clear:both;
    }
    </style>
    </head>
    <body>
    <div id="site">

    <?php if ($feed->error): ?>
    <p><?=$feed->error()?></p>
    <?php endif ?>

    <div class="chunk">
    <h1>Quick-n-Dirty Multifeeds Demo</a></h1>
    </div>

    <?php
    // Let's loop through each item in the feed.
    foreach($feed->get_items() as $item):

    // Let's give ourselves a reference to the parent $feed object for this particular item.
    $feed = $item->get_feed();
    ?>

    <div class="chunk">
    <h4 style="backgrou nd-image:url(<?php echo $feed->get_favicon( ); ?>);"><a href="<?php echo $item->get_permalink( ); ?>"><?php echo html_entity_dec ode($item->get_title(), ENT_QUOTES, 'UTF-8'); ?></a></h4>

    <!-- get_content() prefers full content over summaries -->
    <?php echo $item->get_content( ); ?>

    <?php if ($enclosure = $item->get_enclosure( )): ?>
    <div>
    <?php echo $enclosure->native_embed(a rray(
    // New 'mediaplayer' attribute shows off Flash-based MP3 and FLV playback.
    'mediaplayer' => '../demo/for_the_demo/mediaplayer.swf '
    )); ?>
    </div>
    <?php endif; ?>

    <p class="footnote ">Source: <a href="<?php echo $feed->get_permalink( ); ?>"><?php echo $feed->get_title(); ?></a> | <?php echo $item->get_date('j M Y | g:i a'); ?></p>
    </div>

    <?php endforeach ?>

    <p class="footnote ">This is a test of the emergency broadcast system. This is only a test&hellip; beeeeeeeeeeeeee eeeeeeeeeeeep!</p>

    </div>
    </body>
    </html>[/PHP]
    This is the sort of usort i will use

    [PHP]usort($feed,'fu nnySort');

    function funnySort($a,$b )
    {
    // assign numerical value so we can sort on
    // whether "term" is in title or content or neither

    $term = 'funny';

    $x = 0;
    if (stripos($a->get_title(),$t erm))
    $x = 2;
    elseif (stripos($a->get_content(), $term))
    $x = 1;

    $y = 0;
    if (stripos($b->get_title(),$t erm))
    $y = 2;
    elseif (stripos($b->get_content(), $term))
    $y = 1;

    return $x <= $y
    } [/PHP]
    How can i make this work together so that it displays the most relevant posts first?

    Thanks
  • ronverdonk
    Recognized Expert Specialist
    • Jul 2006
    • 4259

    #2
    Do not start a second thread when the first one does not run!

    This is a duplicate of thread http://www.thescripts.com/forum/thread771947.html

    moderator

    Comment

    Working...