bianbian coding life

便便代码人生: 关注技术, 翻译文档, 偶尔动动手

[原] 关于正则表达式批量替换字符串解决方案答网友问

Posted by bianbian on 2008-04-20 03:43


本文Tags: , ,

发信人: Net (BBS上没有什么事情是bg不能解决的), 信区: WebDesign
标 题: Re: 如何使用正则分别替换?
发信站: 南京大学小百合站 (Sun Apr 20 15:21:23 2008)

不太可能一句话搞定,不过有相对而言的解决办法:
1) 简单易懂

  1. function arrayReplace(str, from, to) {
  2.   for(var i=0; i < from.length; i++)
  3.     str = str.replace(new RegExp(from[i], "g"), to[i]);
  4.   return str;
  5. }
  6. var from = ["A", "B", "C"], to = ["asdf", "fdsa", "......"];
  7. str = arrayReplace(str, from, to);

2) 勉强算一句话吧。。。

  1. str = str.replace(/(A|B|C)/g, function ($0, $1) {
  2.   return {"A": "asdf", "B": "fdsa", "C": "......"}[$1]
  3. });

【 在 superphoenix (格云朱雀) 的大作中提到: 】
: 比如要将一个字符串中的A替换为asdf,B替换成fdsa,C替换成……
: 能不能用一个正则话就替换成功?
: 而不是写成str=str.replace(/A/g,”asdf”).replace(/B/g,”fdsa”)….
: 谢谢!

※ 来源:.南京大学小百合站 bbs.nju.edu.cn.[FROM: Net.nEt.neT.Orz]

标签: , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原] 关于web访问小百合BBS的脚本问题

Posted by bianbian on 2008-04-07 01:28


本文Tags: , , , ,

最近发现个别网友访问小百合BBS会出现如下提示:

见到此文字可能是由于浏览器禁用了活动脚本或者脚本有误
请启用脚本支持后刷新本页;若仍有问题,请点击这里提问

原理:使用Javascript动态输出框架结构(好处是能缓存静态化网页,区别guest用户和登录用户)。因此,一旦这步出现错误,框架结构未建立成功,那么就会显示body里的提示内容。

原因:
(1)浏览器版本不支持。目前小百合BBS支持IE5.5(不保证全部功能有效),完美支持IE6+、Firefox 2.0+、Opera 9+等。如果您的浏览器不在此列,并且测试正常,欢迎反馈。
(2)浏览器脚本引擎未启用。您可以点击这里测试:如果能弹出“脚本启用”,那说明这项没有问题;否则,请修改设置如下:
Firefox:firefox_script_enable.JPG IE:ie_script_enable.JPG
(3)脚本有误。可能性不是很大,除非刚好碰到更新的脚本确实存在错误。基本上我都会测试以后才放上去。不过万一你怀疑是这个问题,可以telnet方式到sysop版看看,如果其他人都没问题那基本就只是您的问题了。
(4)浏览器缓存内的脚本版本过旧。因为浏览器缓存脚本文件(这样不需要每次都下载,加快速度),如果服务器端已经更新了脚本文件,而您的浏览器缓存因为各种原因没有更新,可能也会导致这个问题。请清空浏览器缓存后刷新测试:
Firefox:firefox_del_temp.JPG IE:ie_del_temp.JPG
(5)校内用户访问BBS请关闭代理服务器。
(6)浏览器或系统部分DLL(动态链接库)功能因为病毒或木马的原因失效(Windows系统),请点此下载修复程序,保存后运行,然后重新打开浏览器测试。

如果还有问题,请留言将您的操作系统、浏览器(基本是IE出问题)及版本、杀毒软件等告知。另外推荐使用Firefox:

标签: , , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | 29 Comments »

[译] JavaScript (XMLHttpRequest) 读取二进制数据流

Posted by bianbian on 2008-04-06 01:36


本文Tags: , , , , ,

译者注:原来想用JS直接处理C丢过来的struct数据,具体可以查看:[原] C的struct和JSON交互
经过千辛万苦的查找,找到了这篇文章(作者应该比我更辛苦):Downloading Binary Streams with Javascript XMLHttpRequest
把关键点翻译如下(不过我还没有测试):
利用XMLHttpRequest的overrideMimeType方法设置charset为x-user-defined。

  1. //fetches BINARY FILES synchronously using XMLHttpRequest
  2. load_url = function(url) { 
  3.   netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  4.   var req = new XMLHttpRequest();
  5.   req.open('GET',url,false);
  6.   //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
  7.   req.overrideMimeType('text/plain; charset=x-user-defined');
  8.   req.send(null);
  9.   if (req.status != 200) return '';
  10.   return req.responseText;
  11. }
  12.  
  13. var filestream = load_url(url);
  14. var abyte = filestream.charCodeAt(x) & 0xff;

IE不支持overrideMimeType方法,不过有评论者说VBScript可以实现:

  1. Dim xhr
  2. Set xhr = CreateObject("Microsoft.XMLHTTP")
  3. xhr.Open "GET", "folder.bin", False
  4. xhr.setRequestHeader "Accept-Charset", "x-user-defined"
  5. xhr.setRequestHeader "Content-Type", "application/pdf"
  6. xhr.send Null
标签: , , , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原] 关于Javascript的this关键字答网友问

Posted by bianbian on 2008-03-25 01:57


本文Tags: , ,

发信人: Net (BBS上没有什么事情是bg不能解决的), 信区: WebDesign
标 题: Re: Javascript问题
发信站: 南京大学小百合站 (Tue Mar 25 01:16:03 2008)

Javascript里的this和其他OO语言不一样
Javascript其实并不适合做OO,其实OO也并不适合Javascript
扯远了。。。。。。
this你就当“执行函数的宿主”理解。因此在一串函数的执行过程中,this不停地在变。

  1. A = {
  2.     member: "OK",
  3.     method: function () {
  4.         alert(this.member);
  5.     }
  6. };
  7. B = A.method;
  8.  
  9. A.method(); //弹出"OK". A是宿主,this.member == A.member
  10. B();        //弹出undefined. window(缺省)是宿主,this.member == window.member

为了解决这个问题,很多框架对此进行了包装。
比如Prototype,用bind,实际是动态生成一个function,把宿主作为动态function的执行者,这样对用户来说,this似乎没有变化。

  1. bind: function() {
  2.     if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
  3.     var __method = this, args = $A(arguments), object = args.shift();
  4.     return function() {
  5.       return __method.apply(object, args.concat($A(arguments)));
  6.     }
  7.   }

实际只要明白this是执行者的指针,一切都可迎刃而解。

标签: , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原] 也许是prototype框架的bug

Posted by bianbian on 2008-03-08 08:03


本文Tags: , , , ,

不知道怎么给prototype提交bug report,就写在这里吧:
其实我没有测试过,只是看prototype源码的时候,觉得是个bug:
对String的原型(prototype)添加toJSON()函数只是转义了引号,未转义”\”:

  1. if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
  2. return "'" + escapedString.replace(/'/g, '\\\'') + "'";

如果用户在input里输入\\,转成string应该是”\\\\”,如果没有转义,再写回去的时候就丢了一个\
应该在转义引号前先转义\:

  1. .replace(/\\/g, '\\\\').replace(/"/g, '\\"')
标签: , , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原] 整理了BBS的Javascript脚本,注意关键字

Posted by bianbian on 2008-02-29 12:56


本文Tags: , ,

随着脚本越来越大,原有的funtion式已经不利于维护。
正好凑着有兴致,一个通宵把Net库完善了一下,Net.Dom, Net.Event, Net.Drag, Net.Dialog, Net.Ajax等,应该能满足日常需要。
另外把BBS的脚本分类到Net.BBS, Net.BBS.Html等命名空间下。
现在pack了以后约50K,以后会更大一点。
有兴趣的可以提意见:http://bbs.nju.cn/jssrc/bbs.full.js
另外谢谢oznyang@Lilybbs指出,Javascript关键字在IE里要小心,其实IE也该聪明一点,很显然是个属性嘛:

  1. addComm: function (id) {
  2.   var url = Net.Util.toQuery("pntcomm", {board: G.c.Brd, "id": id, do: "add"});
  3.   //上句do是关键字,在IE里会报错“缺少标识符、字符串或数字”,应该"do"引起来
  4.   var div = $("pntcomm" + id); //评论div
  5.  }

人累了确实会变笨,这么低级的错误debug了我几个小时。哎。。。更关键的是IE这个SX报错不准确,再度鄙视

标签: , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | 2 Comments »

[啊] 淘宝整天改版,自动发货又升级

Posted by bianbian on 2007-11-16 10:02


本文Tags: , ,

自动发货的又要改了。
现在淘宝的发货页面用了Yahoo UI Library,每个按钮都用了后期事件绑定,每个事件又和很多代码相关,于是分析起来比较困难。估计是故意的。
经过1个小时的代码分析。终于搞定。
其实偷偷告诉大家,不需要分析那些事件到底改动了哪些form里的数值。
因为我们的脚本能控制页面的所有元素,把form改成我们需要的样子submit上去就OK了。
帖主要代码:

  1. //发货
  2. gFrm["_fmu.g._0.goo"].value = gTips[gID];
  3. //先把页面里的几个发货单全删了
  4. $(d, "reComPartners").parentNode.removeChild($(d, "reComPartners"));
  5. $(d, "otherPartners").parentNode.removeChild($(d, "otherPartners"));
  6.  
  7. var div = d.createElement("DIV");
  8. var divHTML;
  9. if (gID <= 1) //邮政
  10. {
  11.     divHTML = '<input type="hidden" name="companyCode1"  value="POST"/>' +
  12.         '<input type="hidden" name="checked1" class="hidden logis:chooseCompanyId"   value="true"  />' +
  13.         '<input name="mailNo1" value="' + (gID > 0 ? hh : "POST") + '" />';
  14.     gFrm["methordId"].value = 0;
  15. }
  16. else if (gID == 4) //韵达
  17. {
  18.     divHTML = '<input name="orderType" type="hidden" value="2" />' +
  19.         '<input type="hidden" name="companyId"  value="102"/>' +
  20.         '<input type="hidden" name="companyCode"  value="YUNDA"/>' +
  21.         '<input type="hidden" name="checked" class="hidden logis:chooseCompanyId" value="true" />' +
  22.         '<input name="mailNo" value="' + hh + '" />';
  23.     gFrm["methordId"].value = 1;
  24. }
  25. else if (gID == 2) //南京100
  26. {
  27.     divHTML = '<input name="companyCode1" value="OTHER" />' +
  28.         '<input value="南京壹零零速递" name="companyName"/>' +
  29.         '<input name="checked1" value="true">' +
  30.         '<input name="mailNo1" value="' + hh + '" />';
  31.     gFrm["methordId"].value = 0;
  32. }
  33.    
  34. div.innerHTML = divHTML;
  35. gFrm.appendChild(div);
  36. gFrm.submit();
标签: , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原]一种blog日历的JSON压缩输出算法

Posted by bianbian on 2007-10-17 11:56


本文Tags: , , ,

一般高效的blog日历会将所有发表日期单独存储到js中,由客户端脚本负责输出日历链接。
以前都是按yyyymmdd输出blog日历的,如果发文多的话会特别长(特别是几年下来)。
最近用JSON输出blog日历的时候,发现一种更简单、更高效、更省数据量的方法:

{
"年份":["一月天", "二月天", ...., "五月天", .... , "十二月天"]
}

即年份作为JSON属性,值是十二个月天数构成的数组(五月天纯粹是增加关键字 - -)。
一个月最多有31天,如果用数字表示得用62个长度的字符。我决定用单个可打印字符的ASCII码代替。
在ASCII表里找了一段:从61-91(”=>?@ABCDEF……UVWXYZ[”)满足要求(刚好是天数+60)
于是,原来比如2006每个月各发表1篇blog的数据从:

"20060111,20060212,20060313,20060414,20060515,20060616,20060717,20060818,20060919,20061020,20061121,20061222"

就可以压缩到(106是linux下struct tm的year,是1900+的,106+1900=2006):

{"106":["G","H","I","J","K","L","M","N","O","P","Q","R"]}

当然这只是一个特殊例子,实际上用户写blog都有一段时间的连续性。用这种办法输出的日历数据在
数据量大的情况下会更加省空间。(显然原来的方法重复了很多年份、月份数据)。
下面是一个勤劳用户从04到07年的blog日历(几乎天天有文章更新):
总数据量1K不到,如果用yyyymmdd的方法估计要是这个的5-6倍

b_date={"104":["=@DEGJO[","?CGHLP","BDEHIPTUY[","?ELNOPQRSUVZ","?ABGIKLMOPSTZ[",">CHIJLMNOPSUX",">AFGNT[",">GNOPQV","DUWZ","BDGHKNOQR","=?CDFLNOSTUVXYZ","=>?@BCDEFIJOPQSTWXYZ["],
"105":["?@BCEFGHIJMNOPQSTUV[","=>?@ABCGIJKLMNOPQRSTUVWX","=>?@ABCDEFGHIJKLMNOP","VWXYZ","=>ABCDEFGHIJLMN","BCDEFIJKLMOPQRSUWXYZ","=?@BCDEFGHIJNOPQRUVWY","=>BNRSUVWZ",">ABCDFGHIJKMOQTVWYZ","DEFGHIJLNOPQRUVW[","=>?@BCDEFGHIJKLQSTWXZ","=>@AHIJKNOPQRSVYZ"],
"106":["@ABFILMOPSTU",">DEFGIJKMNPQ",">BCDEFGHIJKOPQSTWXYZ","=?@ABEFGHIJLMNOPQRSTUVWX","DFLNORY[",">ABEFGHIJLOPQSUVWZ","=>ABCEFIJMNQUVW[","=>CEIJORSTUXYZ[","=>ACEGHKOPQRTUVWX","?@BDEFGHIJLNOPQSTUVWX","=>?AFHIJOPQSTWXYZ","=ABCGJNORUV["],
"107":[">@JKLNOPQRSTUVWXY[","=>?BDFGIKLSTUVWX",">@ABCEGHIKOPQRUVWXY[","=ABEFGHIKLMOPQSUVWXZ","?CDFHIJKLMNOQRSTUVWYZ","=?@ABCDEFGHIKLMNOPQRUWY","=?ADFGHIKMNOPSUWZ[","=>?@ABCDFGHIKLMNOPRSVWXY",">?@ABCDEFGIJKMNPQRTVXY",">ACDEGHJKL","",""]
}

用客户端Javascript解析的时候也比原来方便直接。原来需要split然后循环判断(如果排序了可以用二分法)。而JSON不需要这种解析,直接可以拿来用:使用String.fromCharCode(60+天)获得某天的字符,然后在当月中查找一下:

  1. //b_date={}
  2. function HasPost(Y, M, D)
  3. {
  4.     if (!b_date)
  5.         return false;
  6.     if (!b_date[Y])
  7.         return false;
  8.     var ds = b_date[Y][M];
  9.     return (ds.indexOf(String.fromCharCode(60+D)) > -1);
  10. }

(当然,如果要更省空间,甚至可以把各月的数据用一个字符串表示、用逗号隔开;不过这样就得在客户端split然后再解析了。我认为这是不必要的:每年只省下22个字节而已)

标签: , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | 1 Comment »

[原]iframe跨域访问解决方案

Posted by bianbian on 2007-08-24 03:09


本文Tags: , , ,

跨域访问提示“没有权限”,真是伤脑筋。研究几天以后,终于得到了所有解决方案。

A:www.bianbian.org
B:test.bianbian.org
C:www.other.com
从A跨域访问B、C,并能控制B、C的页面内容

方案(1)目标页面是自己的(即可以改页面输出),从A->B
最简单的,在B页面输出个

  1. <script>document.domain="www.bianbian.net";</script>

骗骗浏览器就行了

方案(2)目标页面是别人的,从A->C
比较头疼,只能用后台语言 2.1)做个proxy,2.2)做个JS输出(类似JSON方式了)

标签: , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | 2 Comments »

[原] 淘宝(taobao.com)卖家自动好评工具

Posted by bianbian on 2007-08-01 02:23


本文Tags: , , ,

哈哈,每天点好评太郁闷了,这下爽了。写了一晚上,有什么问题请留言阿。
==================
taobao卖家自动好评工具 v1.1
==================
解压后运行Setup.exe来安装和卸载(第一次运行安装,下一次卸载,再下一次安装。。。。)

安装和卸载都要重新打开浏览器(IE和IE核心的)才有效。

使用的时候:右键点击“评价”链接,选择“taobao卖家自动好评”
淘宝卖家自动好评

因浏览器的关系,会弹出一个对话框,等待自动评价完成(否则浏览器立刻返回就不灵了)

评价的内容修改请用记事本或写字板打开“Haoping.html”第36行参照说明修改

有什么问题,请到我的blog留言:http://bianbian.org

最后做个广告:

欢迎光临必胜客优惠券打折卡专卖:http://shop34553802.taobao.com

保留作者信息下随意复制本程序

bianbian
http://bianbian.org
http://shop34553802.taobao.com

07.8.1

下载:淘宝卖家自动好评工具v1.1 (43K)

原理就是JS控制页面元素啦,还是比较有意思的。
源码:

  1. //***************************************************************
  2. //   Function   : 淘宝卖家自动好评
  3. //   File name  : Haoping.html
  4. //   Author     : bianbian (bianbian.org#gmail.com)
  5. //   Blog       : http://bianbian.org
  6. //   Shop       : http://shop34553802.taobao.com
  7. //   Copyright  : 保留作者信息下随意复制
  8. //   Version    : 1.0  created,      bianbian @ 07-7-31 18:46
  9. //                1.1  解决跨域问题, bianbian @ 07-8-1 1:43
  10. //***************************************************************
  11.  
  12. /*
  13. 在下一行修改你的好评内容,注意如果多行要用"\n"隔开,如:
  14.  
  15. content = "欢迎再次\n光临\n必胜客优惠券打折卡\n专卖\n shop34553802.taobao.com";
  16.  
  17. 也可以写成这样:
  18.  
  19. content = "欢迎再次\n" +
  20. "光临\n" +
  21. "必胜客优惠券打折卡\n" +
  22. "专卖\n" +
  23. " shop34553802.taobao.com";
  24.  
  25. 也可以这样:
  26.  
  27. content = "欢迎再次\n\
  28. 光临\n\
  29. 必胜客优惠券打折卡\n\
  30. 专卖\n\
  31. shop34553802.taobao.com\
  32. ";
  33. */
  34. content = "欢迎再次光临必胜客优惠券打折卡专卖~ shop34553802.taobao.com";
  35.  
  36.  
  37. //
  38. // 下面不需要修改 ***********************************************
  39. //
  40. try
  41. {
  42.     haoping();
  43. }
  44. catch(e)
  45. {
  46.     alert("出错了噢~ 请和 yuelinniao 联系");
  47. }
  48.  
  49. function haoping()
  50. {
  51.     var d = external.menuArguments.document;
  52.     var e = external.menuArguments.event;
  53.     var a = d.elementFromPoint(e.clientX, e.clientY);
  54.     var p = a.parentElement;
  55.     var done = 0;
  56.    
  57.     if (a.innerText != "评价")
  58.     {
  59.         alert("你点错了吧~~~");
  60.         return;
  61.     }
  62.     a.innerText = "好评中..";
  63.     var fr = d.createElement("IFRAME");
  64.     fr.width = 1;
  65.     fr.height = 1;
  66.     //bianbian: 这里涉及iframe的跨域问题,暂时先改成同个域解决
  67.     fr.src = a.href.replace("http:\/\/my\.taobao\.com", "");
  68.     fr.onreadystatechange = function ()
  69.     {
  70.         if (fr.readyState == "complete")
  71.         {
  72.             if (done == 0) //submit form
  73.             {
  74.                 if (submitfrm(fr.contentWindow.document.forms))
  75.                 {
  76.                     done = 1;
  77.                     return;
  78.                 }
  79.                 else //failed, roll back
  80.                 {
  81.                     p.removeChild(fr);
  82.                     a.innerText = "评价";
  83.                 }
  84.             }
  85.             else if (done == 1) //submited, clear
  86.             {
  87.                 p.removeChild(fr);
  88.                 p.removeChild(a);
  89.                 var span = d.createElement("SPAN");
  90.                 span.innerText = "好评OK!";
  91.                 p.appendChild(span);               
  92.             }
  93.             done = 99;
  94.         }
  95.     };
  96.     p.appendChild(fr);
  97.     //bianbian: 这里必须弹出个对话框,否则IE会清空资源直接返回,onreadystatechange就失效了
  98.     alert('好评进行中,完成才能点击"确定"关闭本对话框噢~');
  99.     if (!done)
  100.     {
  101.         p.removeChild(fr);
  102.         a.innerText = "评价";
  103.         alert("提早关闭对话框,无法取得结果,请重试");
  104.     }
  105. }
  106.  
  107. function submitfrm(fms)
  108. {
  109.     for (var i = 0; i < fms.length; i++)
  110.     {
  111.         var f = fms[i];
  112.         if (f.name == "addfeedback")
  113.         {
  114.             f["_fmmy.r._0.r"][0].checked = true;
  115.             f["_fmmy.r._0.c"][0].checked = true;
  116.             f["_fmmy.r._0.t"][0].checked = true;
  117.             f["_fmmy.r._0.f"].value = content;
  118.             f.submit();
  119.             return true;
  120.         }
  121.     }
  122.     return false;
  123. }
标签: , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | 2 Comments »

[原]发现php几个很方便的函数

Posted by bianbian on 2007-03-16 05:03


本文Tags: , ,

确实好久没接触php了,发现自己很落后了。呵呵,其实几年以前我还是php的超级粉丝。
嗯,突然想起大二时用php做过的一个网站:http://www.geohohai.com。这是我第一份Parttime Job,虽然因为客户的需求不是很明确导致我做的很累,不过从和客户谈、合同编写、项目整体规划、项目文档、美工、编码、部署、验收演示整个流程都是自己一个人搞定,我还是很感谢他们给了我这个长足进步的机会的,也是此后靠IT经济自理的正式开端(以前搞家教,真是的:认真备课教的学生反而没进步;随便瞎吹的反而大进步。真是汗颜)。
我又突然怀念起那一个人的浦口暑假,听着梁静茹,啜着咖啡,为了第一份薪水拼命敲键盘,背后是穿过窗帘的夕阳洒下的斑驳。。。。。为什么回忆总是美好的呢?
刚才点过去突然发现几年过去了,他们已经换成asp了。寒,他们又重复开发了一次,不过基本上的美工和系统架构还是我那个:我也是看链接是asp才发现的。架构也基本上是当时我能想出来最先进的了:所有菜单、所有内容都是后台生成的;菜单配置是程序生成JavaScript代码。嗯,又发神经看了一下JS代码,果然这个还在:
/* 本文件由系统产生,请勿更改 Written by http://dzren.com */
说到http://dzren.com,真是遗憾。原来是“东中人”的意思,做的是我高中母校的校友录,是我学网页编程的练习场所。承蒙大家支持和当时年轻气盛,也有兴旺发达的几年零几个月。可惜没有精力维护下去,现在域名都给别人捡走了。留了几百兆的压缩包在我硬盘上(主要是有上传的照片)。每次看到都伤心一番。。。。
。。。。离题了一大通。。。。
php还是在快速开发方面有很大的优势和进步。这次因为项目转别人的ASP+ACCESS到php+PostgreSQL平台,嗯,重温了一下。发现不用写Java的配置文件,还真是爽啊。
嗯,突然不想写了,贴个Example的代码吧(来自Tore Bjlseth),大家都看得明白:

  1. $url1 = "action=search&interest[]=sports&interest[]=music&sort=id";
  2. $str = parse_str($url1, $output);
  3.  
  4. // Modifying criteria:
  5. $output['sort'] = "interest";
  6.  
  7. $url2 = http_build_query($output);
  8.  
  9. echo "<br>url1: ".$url1;
  10. echo "<br>url2: ".$url2;
  11. /*
  12. Results in:
  13. url1: action=search&interest[]=sports&interest[]=music&sort=id
  14. url2: action=search&interest[0]=sports&interest[1]=music&sort=interest
  15.  
  16. (Array indexes are automatically created.)
  17. */
标签: , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in Technology, php | 2 Comments »

[原] IE在UTF-8下解析JavaScript的bug

Posted by bianbian on 2006-10-20 09:57


本文Tags: , , ,

莫名其妙的脚本问题,脚本肯定没有写错,在IE中就是报错,在Firefox中一切正常:页面是UTF-8的,脚本用了插入页面。
(略去若干抓狂文字。。。。。。)
bianbian.js是ANSI编码的,用记事本保存为UTF-8编码,错误没有了。我觉得是IE的bug:页面是UTF-8编码的,为什么一定要求引用的其他文件也是UTF-8?
下次遇到IE下脚本很奇怪的错误不如看看JavaScript脚本和页面的编码是不是一致。

标签: , , ,

遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道

相关日志

Posted in JavaScript, Technology | No Comments »

[原]Create Tree menu from HHC file automatically (HHC转为树形菜单)

Posted by bianbian on 2006-09-08 02:16


本文Tags: , ,

最近写了自动把HHC代码(HHC是CHM帮助文件过程中的目录结构描述文件)生成树形菜单,方便提供在线帮助手册;否则还得手动编写在线帮助的目录结构。支持IE和Firefox、Opera,其他浏览器未测试。使用也很简单,将下载的文件解压到images目录里,然后将HHC文件后缀改为htm(我们拿dir.htm举例),并添加两行代码既可:

sorry for my poor English: I wrote a script to change a HHC file(providing tree index file structure used by CHM-help-format) to tree menu. It's useful when providing online help after having produced CHM help, or you must produce a index-page manually - it's tedious, right? I tested it under IE 6.0, firefox 1.5, and Opera 0.9. It's also easy to use: you only need unzip it to "images" directory, change *.HHC file to *.HTM(dir.htm e.g.), and add two simple lines:

  1. <link type="text/css" rel="stylesheet" href="images/hhc_tree.css" />
  2. <script src="images/hhc_tree.js"></script>

当然了,你得增加个框架,左边引用dir.htm,右边是其他帮助文件。(我的代码会自动找到宽度最大的框架,并把树形菜单里的链接target指向这个框架,所以不用担心框架的命名问题,只要命名过就可以)。像这样:

sorry again: Certainly, you need add a frame page, dir.htm on left maybe, rightside is main help area. My script will set the links' target of tree menu with the frame's name which has the maximized width. So needn't care about the name of frames-but you must set one. like this:

  1. <html>
  2. <head><title>Online Help</title></head>
  3. <frameset cols="200,600">
  4.   <frame src="dir.htm" name="index">
  5.   <frame