2016-09-19 129 views
-1

我想获得一个RSS feed的标题和链接 -解析reddit的RSS源 - PHP

https://www.reddit.com/r/gif.rss 

(在reddit的饲料)

xml=simplexml_load_file("https://www.reddit.com/r/gif.rss") or die("Error: Cannot create object"); 

foreach ($xml->entry->content as $x) { 
$title = $x->title; 
$string = $x->link; 
echo $title; 
echo "<br>"; 
echo $string; 
} 

我不能让标题或链接出现。

+0

我没有看到任何回音声明 –

+0

我试图呼应标题和字符串 - 什么发生 –

+1

'$ x'是一个字符串对象,您可以回显。你必须从'$ x'解析html。 – aynber

回答

0

只需调整您的路径表达式即可。尽管其内容包含在内容的文本值中,但<content>节点不包含<title><link>子项。相反,你需要的节点是兄弟姐妹,所以在循环路径中删除<content>

$xml = simplexml_load_file("https://www.reddit.com/r/gif.rss") 
           or die("Error: Cannot create object"); 
foreach ($xml->entry as $x) { 
    $title = $x->title; 
    $string = $x->link['href']; 
    echo $title; 
    echo "<br>"; 
    echo $string; 
} 

// This guy loves his job 
// <br> 
// https://www.reddit.com/r/gif/comments/53i3jc/this_guy_loves_his_job/ 
// Letron BMW E92 Transformer 
// <br> 
// https://www.reddit.com/r/gif/comments/53i13r/letron_bmw_e92_transformer/ 
// MRW "you're cute when you're angry" 
// <br> 
// https://www.reddit.com/r/gif/comments/53ihpf /mrw_youre_cute_when_youre_angry/ 
// Pussy Pass Denied 
// <br> 
// https://www.reddit.com/r/gif/comments/53hm3w/pussy_pass_denied/ 
// My favorite reverse gif so far 
// <br> 
// https://www.reddit.com/r/gif/comments/53ihwr/my_favorite_reverse_gif_so_far/ 
// Oh hooman, you will hug me. --Dog 
// <br> 
// https://www.reddit.com/r/gif/comments/53cbcq/oh_hooman_you_will_hug_me_dog/ 
... 
0

整理出来:

$xml=simplexml_load_file("https://www.reddit.com/r/gif.rss") or die("Error: Cannot create object"); 

function extractString($string, $start, $end) { 
    $string = " ".$string; 
    $ini = strpos($string, $start); 
    if ($ini == 0) return ""; 
    $ini += strlen($start); 
    $len = strpos($string, $end, $ini) - $ini; 
    return substr($string, $ini, $len); 
} 


foreach ($xml->entry as $x) { 
$string = $x->content; 

$url = extractString($string, '<span><a href="', '">[link]</a></span>'); 
$title = extractString($string, 'alt="', '" title');