2010-06-16 6 views
4

J'aimerais obtenir le titre et l'adresse du flux RSS (s'il y en a un) d'une URL donnée, mais la méthode (s) J'ai utilisé jusqu'ici ne travaillons pas du tout. J'ai réussi à obtenir la balise de titre en utilisant preg_match et une expression régulière, mais je n'arrive pas à obtenir l'adresse du flux RSS.(PHP5) Extraction d'une balise de titre et d'un flux RSS à partir de HTML en utilisant PHP DOM ou Regex

($ WEBCONTENT détient le code HTML du site)

J'ai copié mon code ci-dessous pour référence ...

`// Obtenez la balise title preg_match ('@ (. *) @ i ', $ webContent, $ titleTagArray); J'ai lu sur ici que l'utilisation d'une expression régulière n'est pas la meilleure façon de le faire? J'espère que quelqu'un peut me donner un coup de main avec ceci :-)

Merci.

Répondre

0

RegExp est loin de la meilleure solution;) Utilisez un lecteur de flux, la classe Zend_Feed de la structure zend par exemple.

+3

Bonne pioche s'il était analyser un flux RSS. Il analyse une page HTML cependant. – Gordon

5

Une approche

$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 
} 

Pour obtenir l'attribut href de toutes les balises de lien avec un type de "application/rss + xml" vous utilisez cette XPath:

$xpath->query('//link[@type="application/rss+xml"]/@href'); 
+1

Pour une plus grande variété de types de flux, vous pouvez utiliser quelque chose comme: '/ html/head/link [@ rel =" alternate "et @href et (@ type =" application/atom + xml "ou @ type =" application/rss + xml "ou @ type =" application/rdf + xml ")]/@ href' - regex serait bien, mais' or' suffira – salathe

Questions connexes