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

Я хотел бы получить тег заголовка и адрес 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];` 

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

Благодарю.

Один подход

 $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'); 

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