Удаление конкретного HTML и контента со страницы с помощью PHP для RSS - PullRequest
0 голосов
/ 29 марта 2012

Я создаю мобильную версию веб-сайта моей компании, и нам нужна только лента RSS.

У меня есть 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 и не смог найти учебников по этому вопросу.

EDIT:

Я хотел бы загрузить раздетое содержимое 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>

Надеюсь, это поможет всем, кто может столкнуться с этой проблемой:)

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Единственный способ, который я вижу, - это создать собственный скрипт для маршрутизации ссылок.

Итак, вместо echo $ item-> link используйте

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];

Обратите внимание, что код не проверен, но он должен быть в порядке.

1 голос
/ 29 марта 2012

Я не уверен, правильно ли я понимаю, но вы пытаетесь выводить содержимое на текущей странице всякий раз, когда кто-то нажимает на ссылку more?

Я бы, вероятно, использовал Javascipt для этого, может быть, jQuery's .load () функция , которая загружает 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;
...