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) 浏览(5864)

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) 浏览(4670)

火车采集器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) 浏览(4775)

授权更换费用调整

作者:小文 发布于:2010-8-26 10:36 Thursday 分类:官方公告

目前我们简化授权更换方法。所有火车采集器的授权更换均是在免费更换次数用完后,可以以100元/台/次的方式进行更换。更换次数不限,更换时间也不限。如果您有不理解的地方,请咨询我们的客服。我们的企业QQ为800019423 .

标签: 授权

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

火车采集器2010免费版,商业版之间升级方法

作者:小文 发布于:2010-8-26 10:25 Thursday 分类:常见问题

如果您使用2010版的免费版或是个人版,或是标准版,要升级到高一级的版本,只需要将新的版本的采集器主程序替换掉,然后删除掉旧的授权文件。最后修改一下System/version.txt 文件,其这个文件的格式是 版本|版本号 ,您需要修改一下版本 ,个人版的是 Personal,标准版为Standard,企业版为Enterprise,旗舰版为 Ultimate 。

如您需要从免费版升级到个人版
先下载同版本个人版,然后解压个人版软件,将个人版中主程序LcoySpider.exe 复制一份,覆盖到 免费版 中,这时,您的免费版已经成了个人版了,请登陆软件注册一下即可使用。

如您需要从个人版升级到旗舰版
先下载同版本旗舰版,然后解压旗舰版软件,将旗舰版中主程序LcoySpider.exe 复制一份,覆盖到 个人版 中,然后将原个人版中的 User/LocoyLicence.dll 文件删除,这时,您的个人版已经成了旗舰版了,请登陆软件再注册一下即可使用。

个人版升级到标准版以,旗舰版升级到企业版的方法同个人版升级到旗舰版.

 

如果您使用的是2009或更早版本,需要升级到2010版,请先下载2010版本,将其解压到一个文件夹中,然后运行其中的升级程序 updateto2010.exe ,按提示进行升级.

标签: 升级

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

Powered by emlog