标签间调用功能完成

作者:小文 发布于:2010-9-10 22:55 Friday 分类:开发计划

一直有朋友需要标签间调用功能,即标签B中最后能调用标签A的数据.还有一些朋友需要在保存文件时 按标签值进行文件夹的建立.今天,此功能终于完成了.


标签间的调用是怎么回事呢?比如用户用正则规则获取数据 ,标签B的最后结果是 XXXXX[标签:标签A]XXXXX .那么,在最后的数据处理中,[标签:标签A]的值将被替换成 标签A 的真实数据.

在文件保存时的调用是怎么回事呢?比如我定义图片保存的目录为 [标签:年]/[标签:月]/ 那么,如果我采集的数据中,标签年的值为2010,标签月的值为 09 ,那么,最后这个图片将保存在 2010/09/这个目录下.如果年月变化了,这个值也会进行相应的变化.另一处是在标签里的文件命名,可以使用/来创建目录,比如 [标签:标题]/[原文件名] 格式的话,采集器就会创建一个以标题标签内容为名的文件夹,然后保存文件.注意,这里只支持文件夹,对文件名不支持.

评论(5) 引用(0) 浏览(5211)

重新安装MDAC的方法

作者:小文 发布于:2010-9-3 8:54 Friday 分类:常见问题

火车采集器默认的配置文件均是保存在Access数据库中。如果您的电脑上没有安装或安装错误MDAC这个数据库组件,则程序将可能出错。出错时,可能提示的信息如下:

Exception:
System.InvalidOperationException: The .Net Framework Data Providers require Microsoft Data Access Components(MDAC).  Please install Microsoft Data Access Components(MDAC) version 2.6 or later.


这时您需要重新安装MDAC,安装的方法为:

第一、打开"c:\windows\inf"  注意:“inf”是隐藏目录。
         找到文件“mdac.inf”。鼠标点击右键——> 安装 。
第二、提示要“I386文件夹中的文件”,插入windows xp 安装盘(或为网上下在windows I386 文件。)

 (如果找不到或太复杂,可以参考这个 http://www.leaffly.com/post/MDAC_in_xp_sp3.html )

以上方法参考自:

1.http://bbs.locoy.com/viewthread.php?tid=20966&rpid=107085&ordertype=0&page=1#pid107085
2.http://www.docin.com/p-35935813.html


如以上方法还没能解决您的问题,您不可以在搜索引擎中查找 MDAC 安装等关键字寻找解决办法。

标签: MADC

评论(1) 引用(0) 浏览(12208)

PHP对escape的字符串进行解密

作者:小文 发布于:2010-8-28 12:53 Saturday 分类:其它资源

Escape是js 脚本的一种加密字符串的方式.具体详情可以参见http://www.w3school.com.cn/js/jsref_unescape.asp

有的网站会将中文字进行Escape编码,然后在显示时用unescape再进行转换.比如有这么一段代码

<title>广州公交查询-由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘车路线</title>

这个是经过Escape编码的.我们需要在PHP中将其解密.在网上搜索后,得到加密和解密代码.

<?php

function unescape($str) { //这个是解密用的
         $str = rawurldecode($str);
         preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
         $ar = $r[0];
         foreach($ar as $k=>$v) {
                  if(substr($v,0,2) == "%u")
                           $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
                  elseif(substr($v,0,3) == "&#x")
                           $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
                  elseif(substr($v,0,2) == "&#") {
                           $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
                  }
         }
         return join("",$ar);
}

function phpescape($str){//这个是加密用的
    preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr);
    $ar = $newstr[0];
    foreach($ar as $k=>$v){
        if(ord($ar[$k])>=127){
            $tmpString=bin2hex(iconv("GBK","ucs-2",$v));
            if (!eregi("WIN",PHP_OS)){
                $tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
            }
            $reString.="%u".$tmpString;
        } else {
            $reString.= rawurlencode($v);
        }
    }
    return $reString;
}

?>

我们测试一下

echo unescape("由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘车路线");

可以得到  由金泽大厦到百征科技大厦的乘车路线

标签: escape unescape php

评论(4) 引用(0) 浏览(8436)

Html实体字符转换

作者:小文 发布于:2010-8-28 12:45 Saturday 分类:其它资源

有时,我们采集的数据类似 "&#20320;&#22909;", 这些字符在源代码中是这个样子,但在网页中确是正常显示为中文.这类代码叫做html实体 ,我们可以通过PHP的内置函数,对其进行转换,以方便查阅.

php代码如下:

echo mb_convert_encoding("&#20320;&#22909;", "gb2312", "HTML-ENTITIES"); //输出:你好

mb_convert_encoding 用法可以参考http://cn.php.net/manual/zh/function.mb-convert-encoding.php

如果您使用php插件,可能需要添加 php_mbstring.dll 扩展.火车采集器中PHP插件的扩展添加方法请查看文章 http://board.locoy.com/?post=34

标签: php插件 html实体字符

评论(2) 引用(0) 浏览(8822)

火车采集器2010版PHP插件增加扩展的方法

作者:小文 发布于:2010-8-28 12:19 Saturday 分类:常见问题

火车采集器的PHP插件的实现原理是使用php命令行模式,向php的cli文件发送命令,然后PHP处理php文件,采集器获取返回的数据.从理论上说,PHP插件可以实现几乎所有的PHP功能.关于PHP命令行,大家可以参考官方的权威说明  http://docs.php.net/manual/zh/features.commandline.php

火车采集器中PHP执行程序为Site.exe,对应的php.ini为Site.ini.所有的PHP文件都放在System目录下.PHP命令行程序执行时的工作目录为火车采集器主程序所在目录.如果您需要修改PHP里的一些参数,可以通过修改Site.ini来实现.默认的Site.ini只有PHP的一些常用功能,很多扩展没有加载.您可以按自己的需求,增加或是去除扩展.

如果您是非PHP专业人员,只是使用现成的插件,当提示您没有找到某个扩展或是方法时,您可以直接下载该压缩包并直接解压覆盖到火车采集器System目录下去.该压缩包包含了PHP常见的所有扩展.

标签: php插件

评论(0) 引用(0) 浏览(9422)

Powered by emlog