दिलचस्प पोस्ट
जावा पेज को डीआईवी तक लंबा पेज स्क्रॉल करना सी # में स्ट्रीम के साथ बड़ी पाठ फ़ाइलें पढ़ना एचटीएमएल स्क्रिप्ट टैग का इस्तेमाल कोड में करते समय करते हैं कस्टम स्विफ्ट क्लास को एनएससीडींग के साथ UserDefaults में सहेज रहा है in_array () और बहुआयामी सरणी Ia32-libs (संस्करण 12, 13 और 14 के लिए काम करता है) के बिना 64-बिट उबंटू पर एंड्रॉइड का एप्ट एंड एडीबी काम कैसे करें एंड्रॉइड में वेबव्यू को यूआरएल लोड करते हुए प्रगति कैसे प्रदर्शित करें? आईओएस सफारी में उत्तरदायी होने के लिए आइफ्रेम कैसे प्राप्त करें? अजगर स्क्रिप्ट को किसी अन्य पायथन स्क्रिप्ट से कॉल करने का सबसे अच्छा तरीका क्या है? सही सी में नकारात्मक संख्या स्थानांतरण वेब-आईएनएफ / लिब स्वचालित रूप से एक्लिप्स / टॉमकैट पर 3 जी पार्टी जार जोड़ना क्या एक कंपाइलर बग है जो कि एक is_complete प्रकार के गुण के कार्यान्वयन से उत्पन्न हुआ है? डीजेन्गो – एक सूची को एक क्वेरी में वापस परिवर्तित करें एएसपी.नेट एमवीसी एक्शनलिंक और पोस्ट विधि क्रॉसब्रॉयर ऑनबीयरनलोड?

PHP के साथ आरएसएस / एटम फीड्स को पार्स करने का सबसे अच्छा तरीका

मैं वर्तमान में मैगपी आरएसएस का उपयोग कर रहा हूं लेकिन कभी-कभी तब गिर जाता है जब आरएसएस या एटम फ़ीड का गठन नहीं होता है। PHP के साथ आरएसएस और एटम फीड्स को पार्स करने के लिए कोई अन्य विकल्प हैं?

वेब के समाधान से एकत्रित समाधान "PHP के साथ आरएसएस / एटम फीड्स को पार्स करने का सबसे अच्छा तरीका"

आपके अन्य विकल्पों में शामिल हैं:

  • SimplePie
  • पिछले आरएसएस
  • PHP यूनिवर्सल फ़ीड पार्सर

मैंने हमेशा XML दस्तावेज़ों को पार्स करने के लिए PHP में बनाया गया SimpleXML फ़ंक्शन का उपयोग किया है । यह वहां से कुछ सामान्य पार्सरों में से एक है जिसमें इसकी एक सहज संरचना है, जो किसी आरएसएस फ़ीड की तरह कुछ खास तरह के लिए सार्थक वर्ग बनाना आसान बनाता है। इसके अतिरिक्त, यह एक्सएमएल चेतावनियों और त्रुटियों का पता लगाएगा, और किसी को ढूंढने पर आप इसे साफ़ करने और इसे फिर से प्रयास करने के लिए एचटीएमएल टेडी जैसी कुछ चीज़ों के जरिए स्रोत को चला सकते हैं

SimpleXML का उपयोग करते हुए यह बहुत कठिन, सरल वर्ग पर विचार करें:

class BlogPost { var $date; var $ts; var $link; var $title; var $text; } class BlogFeed { var $posts = array(); function __construct($file_or_url) { $file_or_url = $this->resolveFile($file_or_url); if (!($x = simplexml_load_file($file_or_url))) return; foreach ($x->channel->item as $item) { $post = new BlogPost(); $post->date = (string) $item->pubDate; $post->ts = strtotime($item->pubDate); $post->link = (string) $item->link; $post->title = (string) $item->title; $post->text = (string) $item->description; // Create summary as a shortened body and remove images, // extraneous line breaks, etc. $post->summary = $this->summarizeText($post->text); $this->posts[] = $post; } } private function resolveFile($file_or_url) { if (!preg_match('|^https?:|', $file_or_url)) $feed_uri = $_SERVER['DOCUMENT_ROOT'] .'/shared/xml/'. $file_or_url; else $feed_uri = $file_or_url; return $feed_uri; } private function summarizeText($summary) { $summary = strip_tags($summary); // Truncate summary line to 100 characters $max_len = 100; if (strlen($summary) > $max_len) $summary = substr($summary, 0, $max_len) . '...'; return $summary; } } 

4 लाइनों के साथ, मैं एक सरणी के लिए एक आरएसएस आयात करता हूँ

 $feed = implode(file('http://yourdomains.com/feed.rss')); $xml = simplexml_load_string($feed); $json = json_encode($xml); $array = json_decode($json,TRUE); 

अधिक जटिल समाधान के लिए

 $feed = new DOMDocument(); $feed->load('file.rss'); $json = array(); $json['title'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('title')->item(0)->firstChild->nodeValue; $json['description'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('description')->item(0)->firstChild->nodeValue; $json['link'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('link')->item(0)->firstChild->nodeValue; $items = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('item'); $json['item'] = array(); $i = 0; foreach($items as $key => $item) { $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue; $description = $item->getElementsByTagName('description')->item(0)->firstChild->nodeValue; $pubDate = $item->getElementsByTagName('pubDate')->item(0)->firstChild->nodeValue; $guid = $item->getElementsByTagName('guid')->item(0)->firstChild->nodeValue; $json['item'][$key]['title'] = $title; $json['item'][$key]['description'] = $description; $json['item'][$key]['pubdate'] = $pubDate; $json['item'][$key]['guid'] = $guid; } echo json_encode($json); 

मैं आरएसएस को पार्स करने के लिए सरल लिपि पेश करना चाहता हूं:

 $i = 0; // counter $url = "http://www.banki.ru/xml/news.rss"; // url to parse $rss = simplexml_load_file($url); // XML parser // RSS items loop print '<h2><img style="vertical-align: middle;" src="'.$rss->channel->image->url.'" /> '.$rss->channel->title.'</h2>'; // channel title + img with src foreach($rss->channel->item as $item) { if ($i < 10) { // parse only 10 items print '<a href="'.$item->link.'">'.$item->title.'</a><br />'; } $i++; } 

यदि फीड अच्छी तरह से बनाई गई XML नहीं है, तो आप इसे अस्वीकार करना चाहते हैं, कोई अपवाद नहीं। आप फ़ीड निर्माता कॉल करने के लिए हकदार हैं

अन्यथा आप उस गड़बड़ी का रास्ता फ़र्श कर रहे हैं जिसमें HTML समाप्त हुआ था।

एचटीएमएल साफ लाइब्रेरी कुछ गलत एक्सएमएल फाइलों को ठीक करने में सक्षम है। पार्सर्स को पास करने से पहले अपने फीड्स को चलाना इससे मदद मिल सकती है

मैं एक Google रीडर फ़ीड को पार्स करने के लिए SimplePie का उपयोग करता हूं और यह बहुत अच्छी तरह से काम करता है और इसमें एक सभ्य सुविधा सेट है।

बेशक, मैंने इसे गैर-अच्छी तरह से आरएसएस / एटम फ़ीड के साथ परीक्षण नहीं किया है, इसलिए मुझे नहीं पता कि यह उन लोगों के साथ कैसे काम करता है, मैं मानता हूं कि Google मानकों के अनुरूप हैं। 🙂

निजी तौर पर मैं बीएनसी एडवांस्ड फीड पार्सर का उपयोग करता हूं- मुझे टेम्प्लेट सिस्टम पसंद है जो कि प्रयोग करने में बहुत आसान है

PHP आरएसएस रीडर – http://www.scriptol.com/rss/rss-reader.php – हजारों उपयोगकर्ताओं द्वारा उपयोग किया गया एक पूर्ण लेकिन सरल पार्सर है …

एक और महान मुक्त पार्सर – http://bncscripts.com/free-php-rss-parser/ यह बहुत ही हल्का (केवल 3kb) और उपयोग करने के लिए सरल है!