(PHP5) Извлечение тега заголовка и адреса RSS-канала из HTML с использованием PHP DOM или Regex - PullRequest
4 голосов
/ 16 июня 2010

Я бы хотел получить тег заголовка и адрес RSS-канала (если он есть) из заданного URL-адреса, но методы, которые я использовал до сих пор, просто не работают вообще.Мне удалось получить тег заголовка с помощью preg_match и регулярного выражения, но, похоже, я ничего не могу получить, получая адрес канала RSS.

($ webContent содержит HTML-кодвеб-сайт)

Я скопировал приведенный ниже код для справки ...

`// Получить тег заголовка preg_match ('@ (. *) @ i', $ webContent, $ titleTagArray);

// If the title tag has been found, assign it to a variable
if($titleTagArray && $titleTagArray[3])
 $webTitle = $titleTagArray[3];

// Get the RSS or Atom feed address
preg_match('@<link(.*)rel="alternate"(.*)href="(.*)"(.*)type="application/rss+xml"\s/>@i',$webContent,$feedAddrArray);

// If the feed address has been found, assign it to a variable
if($feedAddrArray && $feedAddrArray[2])
 $webFeedAddr = $feedAddrArray[2];`

Я читал здесь, что использование регулярного выражения не лучший способ сделать это?Надеюсь, кто-то может помочь мне с этим: -)

Спасибо.

Ответы [ 2 ]

5 голосов
/ 16 июня 2010

Один подход

$dom = new DOMDocument;            // init new DOMDocument
$dom->loadHTML($html);             // load HTML into it
$xpath = new DOMXPath($dom);       // create a new XPath

$nodes = $xpath->query('//title'); // Find all title elements in document
foreach($nodes as $node) {         // Iterate over found elements
    echo $node->nodeValue;         // output title text
}

Чтобы получить атрибут href всех тегов ссылок с типом «application / rss + xml», вы должны использовать этот XPath:

$xpath->query('//link[@type="application/rss+xml"]/@href');
0 голосов
/ 16 июня 2010

RegExp далеко от лучшего решения;) Используйте программу чтения каналов, например, класс Zend_Feed инфраструктуры Zend.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...