2011-04-01 43 views
0

我使用cURL從我自己的wordpress博客獲取rss源,將其顯示爲「feed」邊欄,當我得到標題時,所有引號顯示爲這樣的:一個™€當我用cURL和php獲取rss feed標題時,我得到的引號亂碼

我用得到的捲曲代碼:

$ch = curl_init($feed_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_ENCODING, ""); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($ch, CURLOPT_TRANSFERTEXT, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
curl_setopt($ch, CURLOPT_HEADER, false); 
$content = curl_exec($ch); 

奇怪的是,在我的本地服務器,它帶來的行情還算可以,但在遙控器上,它返回起。

我用它來打印出來的「飼料」的代碼如下:

$x = new SimpleXmlElement($content); 
    foreach ($x->channel->item as $entry) { 
     echo "<li class='newsLI'><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a></li>"; 
    } 

和我所得到的,可以在底部左側的屏幕在這裏可以清楚地看到: http://www.inlinkz.com

任何想從哪裏開始尋找答案?

在此先感謝!

回答

0
  1. 你沒有DOCTYPE定義
  2. 您沒有設置頁面的content-type

添加以下幾行代碼解決你的問題(至少在我的機器上;)) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

(當然,這應該設置任何定義你實際使用到)

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

+0

非常感謝你!那就是訣竅!我沒有使用Doctype,因爲它改變了我的佈局。我必須先在測試服務器上修復它,然後再上傳它。內容類型是正確的錢。再次感謝!!! – pataroulis 2011-04-02 08:50:08

+0

如果問題得到解答,請將回復標記爲正確。 – 2011-04-02 14:16:32

0

三行下面的代碼工作對我來說,我認爲他們應該在全球開展工作。

  1. $settings['rss_strip']="1200";

  2. $row['summary'] = $admin->partial($row['summary'],$settings['rss_strip'],0);

  3. $html .= '<description>'. $this->superhtmlentities(strip_tags($row['summary']) ).'</description>\n';

很簡單的技巧就在於變量聲明中的代碼首先聲明,呼籲在第二和時第三個(功能strip_tags)代碼語句顯示rss-feed正確地(在我的情況下)與任意長度的unicode字符。 注意:您分配給$settings['rss_strip']的值很重要。值越大,SUCCESS的可能性就越大。