2016-12-16 89 views
0

我很多年沒有使用過PHP,我試圖以一種需要高音單元名稱的方式來操縱tweet的RSS源。我目前正在從TwitRSS提取RSS提要,並且除了高音單元的名稱使用名稱空間,所以元素都聲稱高音單元名稱以外,它都工作正常。我在這個網站上看到了很多關於如何使用命名空間的主題,並且我嘗試了所有這些都沒有成功。如何用SimpleXML替換名稱空間?

現在我的代碼如下所示:

$newsoutput = new SimpleXMLElement('http://twitrss.me/twitter_search_to_rss/?term=php', LIBXML_NOCDATA, true); 
$newsoutput = json_decode(json_encode($newsoutput), TRUE); 
foreach ($newsoutput['channel']['item'] as $item) { 
echo $item['title']."<br>".$item['description']."<br>".$item['link']."<br>".$item['guid']."<br>".$item['pubDate']."<br>"; 
echo $item['author']."br";} 

那當然對所有正常的元素是回聲的出正常工作,但每當我試圖讓該命名空間標記每次我試圖解決導致錯誤消息在循環中。通常它與子元素爲空有關。

現在我想嘗試一種不同的解決方案。我想做一個字符串替換,它將改變每個命名空間元素與一個非命名空間元素。理想情況下,生成的RSS提要將使每個元素都被替換,然後正常回顯出來。

我嘗試添加的東西,如:

$newsoutput->str_replace("dc:creator","author",""); 

我在循環之前加入,因爲我會假設,item元素的數組將有循環和echo'ing前的SimpleXML數組中被改變。我知道我所做的一個問題是php str_replace需要3個參數,我只能想到兩個。我想要替換的詞以及我想要替換的詞。我還需要什麼?我還認爲,在運行新命名空間免費提要的循環之前,我可能必須運行循環來替換字符串。

+0

哎呀,「高音單元名稱」應與命名空間中的標籤包圍,但它得到了剝離出來 – XCon065

+0

'str_replace'是一個全球性的功能。 ' - > str_replace'正在使用類方法。你反對做錯了。 –

+0

oops,作者被留在那裏從以前的字符串替換嘗試 – XCon065

回答

0

您的代碼有很多其他的例子複製破解這些都使得您的生活困難,不容易:

  • 你不需要LIBXML_NO_CDATA;無論如何,當你將對象轉換回XML時它只會有所不同(它也會對print_r的結果產生影響,但不應該依賴於像SimpleXMLElement這樣的「魔術」對象)
  • $newsoutput = json_decode(json_encode($newsoutput), TRUE);基本上說「扔掉SimpleXML API的所有有用的位,並試圖給我一個陣列,不保證其格式」
  • 添加字符串操作,只是添加hacks黑客。

相反,你應該學習如何使用命名空間使用SimpleXML,這是通過使用the ->children() method(也許還the ->attributes() method,它的工作方式相同)。

所以你可以使用這樣的事情:

$newsoutput = new SimpleXMLElement('http://twitrss.me/twitter_search_to_rss/?term=php', 0, true); 
foreach ($newsoutput->channel->item as $item) { 
    echo $item['title']."<br>".$item['description']."<br>".$item['link']."<br>".$item['guid']."<br>".$item['pubDate']."<br>"; 
    echo $item->children('http://purl.org/dc/elements/1.1/')->creator."<br>"; 
} 
+0

是的,這有效。事實上,在發佈之後不久,我就明白了這一點。 – XCon065

+0

現在我已經有了一個全新的問題,將它作爲自己的RSS提要進行回顯。我的解決方案只會在瀏覽器中生成提要的最後一行,即使您點擊查看源代碼所有內容都在那裏。源代碼也只顯示爲一行代碼。 – XCon065

+0

應該在瀏覽器中說明飼料的最後一項。 – XCon065

相關問題