jump to navigation

zFeeder 試玩 June 28, 2005

Posted by Jeff in : Computer , trackback

去抓了 zFeeder 來玩
卻發現 DreamHost allow_url_fopen 是不給用的
山不轉路轉 他的 curl 可以用
就把它改了一下

$ch = curl_init($feedurl);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);

這樣就可以了
另外發現一個 bug
有些 feed 在 xml_get_current_line_number 會掛掉 (ex: flickr…怪…)
本來想加一個 try 搞定
但是 PHP 5 才有 try 啊 :(

2005-07-01 Update :
發現 UTF-8 有點問題
Google 一下
原來改一下這個就行了

$xml_parser = xml_parser_create($encoding);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, $encoding);

還有一個是 某些 Feed 沒有 link 這個資料
URL 會抓不到
所以我又加了一個判斷

} elseif ($zf_tag == $zf_rss . $rssChannel . '^ITEM^GUID') {
if (! $zf_items[$zf_itemCount]['link']) {
$zf_items[$zf_itemCount]['link'] .= $data;
}
}

用它的 perment link 來代替

目前沒有相關的文章

Comments»

1. ding - August 6, 2005

您好,請問utf-8的亂碼問題如何解決。找不到你所描述的程式碼!

2. Jeff - August 6, 2005

其實就是有用到 xml_parser 的地方要指定 encoding 就對了

在 include 裡面的 zfunc.php
$xml_parser = xml_parser_create();
改成
if (preg_match( ”, $data, $match)) {
$encoding = strtoupper($match[1]);
} else {
$encoding =’UTF-8′;
}
$xml_parser = xml_parser_create($encoding);

然後 差不多150行的地方
加上一行
@$fp = fopen($filename, “r”);
if ($fp) {
$data = fread($fp, filesize($filename));
fclose($fp);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, $encoding);
這樣就行了

3. ding - August 9, 2005

謝謝你的回答,但是我還是搞不定
Warning: preg_match(): Empty regular expression in c:\appserv\www\newsfeeds\includes\zfuncs.php on line 44

Warning: preg_match(): Empty regular expression in c:\appserv\www\newsfeeds\includes\zfuncs.php on line 142

// $xml_parser = xml_parser_create();
if (preg_match(“ , $data, $match)) {

4. ding - August 9, 2005

// $xml_parser = xml_parser_create();
if (preg_match(“ , $data, $match)) {

5. ding - August 9, 2005

if (preg_match(“ , $data, $match)) {

6. ding - August 9, 2005

sorry!我要貼的字一直貼不出來!

因為還不懂PHP 44,142行和utf-8旁我把他改小寫,還是有問題請您幫我看一下!

7. Jeff - August 10, 2005

抱歉有些字元被 fliter 掉了
我把我改過的放在這裡 zfunc.php
下載回去試看看嘍