Написание RSS-канала для MySQL с использованием PHP - PullRequest
2 голосов
/ 01 октября 2009

В основном мне нужно создать PHP-документ, который будет читать RSS-канал и записывать информацию в документ MySQL. Однако у меня очень мало опыта в этой области, и мне было интересно, сможет ли кто-нибудь привести пример того, как это сделать? Я думал о чем-то, что не помогло MagpieRSS, однако документация до сих пор не дает мне покоя =)

Любая помощь будет принята с благодарностью

Ответы [ 3 ]

6 голосов
/ 01 октября 2009

Не знаю точно, к чему вы стремитесь, но:

Из документации Сорока : (см. Примеры использования)

require_once 'rss_fetch.inc';

$url = 'http://magpie.sf.net/samples/imc.1-0.rdf';
$rss = fetch_rss($url);

echo "Site: ", $rss->channel['title'], "<br>";
foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    echo "<a href=$url>$title</a></li><br>";
}

Это позволит получить RSS-канал на полезные части. Вы можете изменить что-то вроде этого:

foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    mysql_query("INSERT INTO `table` (`id`, `title`, `link`) VALUES (NULL, '$title', '$url')")";
}

Это должно помочь вам начать, если ничего другого.

3 голосов
/ 01 октября 2009

Самый простой способ - это использовать cURL, чтобы получить информацию в виде XML из URL-адреса rss, а затем использовать simplexml, чтобы превратить XML-код rss в пересекаемый объект. Используйте Xpath, чтобы получить части XML, которые вы хотите сохранить в БД. Наконец, переместите данные в БД.

Пример

Извините, я выбежал за дверь, когда увидел ваш вопрос. Я на самом деле написал очень простой сценарий неделю назад, чтобы сделать то, о чем вы говорите:

 //cURL to get RSS as XML
function get_rss($feed_url) {
    $feed_request = curl_init($feed_url);
    curl_setopt($feed_request, CURLOPT_RETURNTRANSFER, 1);
    $feed_xml = curl_exec($feed_request);
    curl_close($feed_request);

    return $feed_xml;
}

function rss2sql($xml, $sql) {
    //simplexml to convert XML to objects
    $rss_xml = simplexml_load_string($xml);
    //XPath to get an array of items in RSS
    $rss_items = $rss_xml->xpath('//item');
    if(!$rss_items) {
        die("No Items In RSS Feed!");
    } else {
        // Create Prepared Statement for Insert and bind variables.
        $item_insert = $sql->prepare("INSERT INTO rsstable VALUES (?, ?, ?, ?)");
        $item_insert->bind_param('ssss', $item->title,$item->link,$item->guid,$item->description);
        //Loop through each item and execute prepared statement
        foreach($rss_items as $item) {
            $item_insert->execute();
        }
    }
}

$sql = new mysqli("localhost", "my_user", "my_password", "world");
$rss_url = "http://example.org/rssfeed";
$rss_xml = get_rss($rss_url);

rss2sql($rss_xml, $sql);
0 голосов
/ 01 октября 2009

MagpieRSS кажется хорошим выбором. Да, документация могла бы быть лучше, но у вас есть все необходимые примеры на первой странице:

require('rss_fetch.inc');
$rss = fetch_rss($url);
$items = rss->items;

Просто у вас есть ассоциативный массив, которым вы можете манипулировать, чтобы вставить в вашу базу данных.

foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    mysql_query("INSERT INTO rss_articles ( title, link ) VALUES ( $title, $url );

    //Of course, this has no security measures which you should really look into.       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...