webForumDet fria alternativet

Hanterade saknade element i RSS-läsare

PHP

1 svar · 647 visningar · startad av prplxr

Medlem sedan juni 2012581 inlägg
Frågan#1

Hej!

Har skrivit en väldigt simpel men effektiv RSS-läsare. Problemet jag stött på är när ett dokument saknar exempelvis <description>-taggar. Hur hanterar jag detta på bästa sätt? Några idéer eller knuffar i rätt riktning?

Det jag har i nuläget är följande:

<?php

	function printRSS($url, $items, $maxlen, $showdesc) {
	
		$xmlDoc = new DOMDocument();
		$xmlDoc -> load($url);
		
		$x = $xmlDoc -> getElementsByTagName('item');
		
		for ($i = 0; $i < $items; $i++) {
			
			$title =	$x -> item($i) -> getElementsByTagName('title') -> item(0) -> childNodes -> item(0) -> nodeValue;
			$link = 	$x -> item($i) -> getElementsByTagName('link') -> item(0) -> childNodes -> item(0) -> nodeValue;
			$desc = 	$x -> item($i) -> getElementsByTagName('description') -> item(0) -> childNodes -> item(0) -> nodeValue;
			
			$title =	utf8_decode($title);
			$desc = 	utf8_decode($desc);
			
			if(strlen($title) > $maxlen) {
				$title = substr($title, 0, $maxlen) . "...";
			};
			
			echo "<a href=\"{$link}\" target=\"_blank\"><strong>{$title}</strong></a><br />";
			
			if($showdesc) {
				if(strlen($desc) > $maxlen) {
					$desc = substr($desc, 0, $maxlen) . "...";
				};
				echo "{$desc}<br />";
			};
			
		};
		
	};

?>
Medlem sedan juni 2012581 inlägg
#2

Kan ju vidareutveckla litet. Det som händer när man försöker hämta värde från

$x -> item($i) -> getElementsByTagName('description') -> item(0) -> childNodes -> item(0) -> nodeValue

så stannar exekveringen om inte <description> finns. Jag vill kunna kontrollera om det elementet existerar.

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)