2012-03-29 51 views
0

我正在構建我公司網站的移動版本,並且我們需要的是RSS提要。從PHP的RSS頁面中剝離特定的HTML和內容

我有RSS細拉與此代碼:

<?php 

    $url = 'http://www.someurl.com/rss/articles'; 
    $feed = simplexml_load_file($url, 'SimpleXMLIterator'); 
    $filtered = new LimitIterator($feed->channel->item, 0, 15); 
    foreach ($filtered as $item) { ?> 

    <li data-icon="false"> 
    <h2><a href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a></h2> 
    <p class="desc"><?php echo $item->description; ?></p> 
    <br /> 
    <p class="category"><b><?php echo $item->category; ?></b></p> 
    <a class="link" href="<?php echo $item->link; ?>">Read More</a> 
    <br /> 
    <p class="pubDate"><?php echo $item->pubDate; ?></p> 
    <br /> 
    </li> 

<?php } ?> 

我想什麼做的是利用無論是fopen()file_get_contents()處理的點擊「更多」鏈接,並去除所有的傳入頁面的內容除<article>標籤外。

我在Google上搜索過去的一天,並沒有成功找到關於此主題的任何教程。

編輯:

我想剝離HTML內容加載到我的框架內自己的看法。

第二個編輯:

我只想分享我是如何解決這個問題。

我修改$item->link;通過URL作爲變量進行傳遞:

<a href="article.php?rss_url=<?php echo $item->link; ?>">Read More</a> 

在article.php頁,我收集了if()聲明變量:

if (isset($_GET['rss_url']) && is_string($_GET['rss_url'])) { 
    $url = $_GET['rss_url']; 
    } 

然後建設根據以下評論的建議,我建立了一種方法,然後收集傳入的URL並剝離必要的標記,然後格式化爲我的移動視圖:

<div id="article"> 
    <?php 
    $link = file_get_contents($url); 
    $article = strip_tags($link, '<title><div><article><aside><footer><ul><li><img><h1><h2><span><p><a><blockquote><script>'); 
    echo $article; 
    ?> 
</div> 

希望這有助於其他人誰可能會遇到這樣的問題:)

回答

1

我不知道如果我理解正確的話,但是你想輸出的內容,只要有人點擊更多鏈接在當前頁面?

我可能會使用javascipt的做到這一點,也許jQuery的.load() function從另一個頁面加載HTML,並允許你只加載一個頁面的特定片段..但如果你需要使用PHP我會去了解一下Simple HTML DOM Parser

$html = file_get_html($yourUrl); 
$article = $html->find('article', 0); // Assuming you only have 1 article/page 
echo $article; 
1

我能看到的唯一方法是設置您自己的單獨腳本來路由鏈接。

所以,與其回聲$用品 - >鏈接使用

echo 'LinkProcessor.php?link='.$item->link 

然後叫LinkProcessor.php,安裝一個腳本和網頁上使用的file_get_contents。然後,您可以處理XML,只顯示文章標籤和回聲結果:

$article = file_get_contents($_GET['link']); 
$xml = new SimpleXMLElement($article); 
$articleXml = $xml->xpath('//article'); 
echo articleXml[0]; 

注意,代碼是未經測試,但它應該是確定。