> 最近在研究RSS聚合程序,个人觉得相对最好的程序是Gregarius,效率高、负载低、口碑不错。
> 由于此程序的最后更新时间是 2008-11-26,那就要考虑到新版本PHP不支持函数的问题。

> 像上图一样,此函数在 PHP 5.3.0 中会被屏蔽,在 PHP 6.0.0 里会被删除掉,同时可被替代。
> 因为PHP团队将删除支持 Portable Operating System Interface (POSIX) 正则表达式的扩展。
> 1. Eregi 函数的语法:
int eregi(string pattern,string string [,array regs]);
> 2. Eregi 函数的解释:
> 搜寻string来和pattern的正规表示比对。
> 若找到比对则会呼叫第三个参数regs,比对的结果会储存在regs的元素之中。
> $regs[1]为符合第一个左边括弧(parenthesis)的部份字符串,$regs[2]为符合第二个括弧的部份字符串。
> 以此类推,$regs[0]为参数string。
> 如果ereg( )找到比对,则$regs会被十个元素来填满,即使是多于或少于十个括弧内的部份字符串。
> 也可以比对,这将不影响ereg( )去比对更多部份字符串的能力。如果比对不到,$regs将不会被ereg( )改变。
> 搜寻是不区分大小写的。
> 如果在string中比对到pattern则传回true,如果比对不到或是发生错误则传回false。
> 3. Eregi 函数的官方范例:
<?php
$date="2009-02-12";
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
}
else {
echo "Invalid date format: $date";
}
?>
> 以上的范例会将日期格式YYYY-MM-DD切断,并且把它显示成DD.MM.YYYY的格式。
> 4. 如何使用新的函数:
> 新的函数是 preg_match(),语法如下。
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags [, int $offset ]]] )
> 5. 如何修复 Gregarius0.6.1:
function getPath($path='') {
static $ret;
if ($ret === NULL) {
$ret = dirname($_SERVER['PHP_SELF']);
if (defined('RSS_FILE_LOCATION') && eregi(RSS_FILE_LOCATION."\$", $ret)) {
$ret = substr($ret, 0, strlen($ret) - strlen(RSS_FILE_LOCATION));
}
if (substr($ret, -1) == "\\") { // Take off trailing backslash
$ret = substr($ret, 0, -1);
}
if (substr($ret, -1) != "/") { // Add a frontslash
$ret .= "/";
}
}
return $ret . $path;
}
$dummy = getPath();
eregi(RSS_FILE_LOCATION."\$", $ret)
> 以上的函数修复如下,即把POSIX表达式修改成PCRE表达式:
preg_match(RSS_FILE_LOCATION."\$/i", $ret)
我使用过这个,但是感觉反应很慢就放弃了
@阿士 , 唔 ~ 这个反应的确不怎么样 ~
╮(╯▽╰)╭ 程序太旧了 ~
对这个没概念
@开心凡人 , 呵呵,RSS聚合来着 ~
你理解成半残废的谷歌阅读器就好 O(∩_∩)O。
在我那,外网测试数据库中文乱码,研究中......
@崔凯 , 杯具啊 ~ 别忘了 UTF-8 喔 ~ :biggrin: