Извлечение контента из HTML с помощью PHP

0

Вот мой HTML файл:

<html>
  <head>    
    <link href='http://wendyandgabe.blogspot.com/favicon.ico' rel='icon' type='image/x-icon'/>
    <link href='http://wendyandgabe.blogspot.com/' rel='canonical'/>
    <link rel="alternate" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://wendyandgabe.blogspot.com/feeds/posts/default" />
    <link rel="alternate" type="application/rss+xml" title="O&#39; Happy Day! - RSS" href="http://wendyandgabe.blogspot.com/feeds/posts/default?alt=rss" />
    <link rel="service.post" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://www.blogger.com/feeds/5390468261501503598/posts/default" />
  </head>
  <body>
  </body>
</html>

Я хочу извлечь URL-адрес href, где type="application/rss+xml" из вышеуказанного html файла. Как это возможно? Может ли кто-нибудь показать пример кода?

  • 1
    взгляните на DomDocument & DomXPath ...
  • 0
    Вы можете использовать PHP DOM для этого php.net/manual/en/book.dom.php
Теги:

3 ответа

2

Вы можете использовать

DomDocument http://php.net/manual/de/class.domdocument.php и

а также

DomXPath http://de3.php.net/manual/de/class.domxpath.php

$html = <<<EOF
<html>
  <head>    
    <link href='http://wendyandgabe.blogspot.com/favicon.ico' rel='icon' type='image/x-icon'/>
    <link href='http://wendyandgabe.blogspot.com/' rel='canonical'/>
    <link rel="alternate" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://wendyandgabe.blogspot.com/feeds/posts/default" />
    <link rel="alternate" type="application/rss+xml" title="O&#39; Happy Day! - RSS" href="http://wendyandgabe.blogspot.com/feeds/posts/default?alt=rss" />
    <link rel="service.post" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://www.blogger.com/feeds/5390468261501503598/posts/default" />
  </head>
  <body>
  </body>
</html>
EOF;

$xml = new DomDocument;
$xml->loadHTML($html);

//create a xpath instance
$xpath = new DomXpath($xml);

//query for <link type="application/rss+xml"> and use the first found item
$link = $xpath->query('//link[@type="application/rss+xml"]')->item(0);


var_dump($link->getAttribute('href'));

http://3v4l.org/PkH8n

  • 0
    работает отлично, но когда я загружаю html из внешнего, это показывает ошибки, $ html = file_get_contents (" wendyandgabe.blogspot.com" );
  • 0
    Вот мой отредактированный код, но это не работает. <? php $ html = file_get_contents (" wendyandgabe.blogspot.com" ); $ xml = новый DomDocument; $ Xml-> loadXML ($ HTML); $ xpath = new DomXpath ($ xml); $ link = $ xpath-> query ('// link [@ type = "application / rss + xml"]') -> item (0); echo $ link-> getAttribute ('href'); ?>
Показать ещё 2 комментария
0

Используя PHP Simple HTML DOM Parser, вот как:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$text = '<html>
  <head>    
    <link href="http://wendyandgabe.blogspot.com/favicon.ico" rel="icon" type="image/x-icon"/>
    <link href="http://wendyandgabe.blogspot.com/" rel="canonical"/>
    <link rel="alternate" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://wendyandgabe.blogspot.com/feeds/posts/default" />
    <link rel="alternate" type="application/rss+xml" title="O&#39; Happy Day! - RSS" href="http://wendyandgabe.blogspot.com/feeds/posts/default?alt=rss" />
    <link rel="service.post" type="application/atom+xml" title="O&#39; Happy Day! - Atom" href="http://www.blogger.com/feeds/5390468261501503598/posts/default" />
  </head>
  <body>
  </body>
</html>';


//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($text);


// Find the link with the appropriate selectors
$link = $html->find('link[type=application/rss+xml]', 0);


// Find succeeded
if ($link) {
    $href = $link->href;
    echo $href;
}
else
    echo "Find function failed !";


// Clear DOM object (needed essentially when using many)
$html->clear(); 
unset($html);

OUTPUT 
======
http://wendyandgabe.blogspot.com/feeds/posts/default?alt=rss

DEMO

0

Вы можете попробовать этот класс PHP DOMDocument

http://php.net/manual/en/domdocument.loadhtml.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню