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