protected function get_items_datas($link) { if ($link) { $datas = array(); @ini_set("zend.ze1_compatibility_mode", "0"); $informations = array(); $loaded = false; $aCurl = new Curl(); $aCurl->timeout = 2; $content = $aCurl->get($link); $flux = $content->body; if ($flux && $content->headers['Status-Code'] == 200) { $rss = new domDocument(); $old_errors_value = false; if (libxml_use_internal_errors(true)) { $old_errors_value = true; } $loaded = $rss->loadXML($flux); if (!count(libxml_get_errors())) { if ($loaded) { //les infos sur le flux... //Flux RSS $sxe = new SimpleXMLElement($flux); $ns = $sxe->getNamespaces(true); $informations['items'] = array(); if ($rss->getElementsByTagName("channel")->length > 0) { $channel = $rss->getElementsByTagName("channel")->item(0); $elements = array('url'); $informations = $this->get_informations($channel, $elements, 1); //on va lire les infos des items... $rss_items = $rss->getElementsByTagName("item"); $elements = array('title', 'description', 'link', 'pubDate', 'category', 'content'); $count = 0; for ($i = 0; $i < $rss_items->length; $i++) { if ($this->parameters['nb_max_elements'] == 0 || $i < $this->parameters['nb_max_elements']) { $informations['items'][$count] = $this->get_informations($rss_items->item($i), $elements, false); if ($ns["dc"]) { $namespace_dc_date = $rss->getElementsByTagNameNS($ns["dc"], 'date')->item($i)->nodeValue; if ($namespace_dc_date) { $informations['items'][$count]['pubDate'] = str_replace(array("T", "Z"), " ", $namespace_dc_date); } $namespace_dc_subject = $rss->getElementsByTagNameNS($ns["dc"], 'subject')->item($i)->nodeValue; if ($namespace_dc_subject) { $informations['items'][$count]['subject'] = $namespace_dc_subject; } } $count++; } } //Flux ATOM } elseif ($rss->getElementsByTagName("feed")->length > 0) { $feed = $rss->getElementsByTagName("feed")->item(0); $atom_elements = array('url'); $informations = $this->get_atom_informations($feed, $atom_elements, 1); //on va lire les infos des entries... $informations['items'] = array(); $entries = $rss->getElementsByTagName("entry"); $atom_elements = array('title', 'link', 'published', 'content'); for ($i = 0; $i < $entries->length; $i++) { if ($this->parameters['nb_max_elements'] == 0 || $i < $this->parameters['nb_max_elements']) { $informations['items'][] = $this->get_atom_informations($entries->item($i), $atom_elements, false); } } } foreach ($informations['items'] as $rss_item) { $data = array(); $data["type"] = "rss"; $data["title"] = $rss_item["title"]; $data["summary"] = $rss_item["description"]; $data["content"] = $rss_item["content"]; $data["url"] = $rss_item["link"]; if ($rss_item["pubDate"]) { $data["publication_date"] = date('Y-m-d h:i:s', strtotime($rss_item["pubDate"])); } else { $data["publication_date"] = ""; } $data["logo_url"] = $informations["url"]; $data["descriptors"] = ""; if (is_array($rss_item["category"])) { $data["tags"] = array_map("strip_tags", $rss_item["category"]); } else { $data["tags"] = strip_tags($rss_item["category"]); } $datas[] = $data; } } } else { libxml_clear_errors(); } } libxml_use_internal_errors($old_errors_value); @ini_set("zend.ze1_compatibility_mode", "1"); return $datas; } else { return false; } }
echo $node->nodeValue . "<br/>"; } echo "--------------------------------------<br/>"; function viewInfo($node) { $parent = $node->parentNode->nodeName; $name = $node->nodeName; $value = $node->nodeValue; echo "Родитель: {$parent}<br/>"; echo "Имя: {$name}<br/>"; echo "Значение: {$value}<br/>"; echo "Дети: "; for ($child = $node->firstChild; $child; $child = $child->nextSibling) { echo $child->nodeName . " = " . $child->nodeValue . ", "; } echo "<br/> Атрибуты: "; $namednodmap = $node->attributes; for ($i = 0; $i < $namednodmap->length; $i++) { $attr = $namednodmap->item($i); echo $attr->nodeName . " = " . $attr->nodeValue; } } viewInfo($root); echo "<br/>--------------------------------------<br/>"; $nodelist = $document->getElementsByTagNameNS("http://php.loc", "el"); for ($i = 0; $i < $nodelist->length; $i++) { $node = $nodelist->item($i); echo $node->nodeName . "<br/>"; echo $node->nodeValue . "<br/>"; } echo $root->getAttributeNodeNS("http://php.loc", "attr")->nodeName;