好几个朋友之前问过我有关Google自定义搜索的美化,之前我一直在Bus工作,只是在QQ上应付几句完事。现在刚好请假,有点时间,自己弄了一下,发现其实一点不复杂,只需要基本的HTML知识就可以搞定了。
问我自定义搜索的朋友大致有两类,一个是嫌程序本身自带的搜索太烂,比如wordpress就是,还有一个是为了赚$,当然这个需要和Google Adense帐号绑定,本文不打算介绍这部分内容,因为我的Adense帐号不知为何故就被Google告知作弊,然后就莫名其妙的封掉了,我对天发誓,我没有做过弊,帐号中仅有的几美元也随之飞灭,从此我对Google Adense失去兴趣。
要自定义Google搜索,首先你当然需要有个Google自定义搜索,没有的同学,可以去这里申请一个,过程超级简单,Google有帮助功能,此处略去数千字。
Monthly Archives: 十一月 2008
自定义Google搜索引擎—-美化
正则表达式入门之顺序环视(lookahead)
在 以前的编码过程中,总是遇到货币数值的问题,比如¥10000000,根据习惯,¥10,000,000更容易阅读,我从前的做法很复杂,要先计算字符串的位数,然后根据位数再决定将第一个逗号放在第一位数字后面还是第二、第三位,后面的数字每个三位加上一个逗号,最后一位不加逗号,设计如此复杂的算法的原因是我没办法,像手动添加逗号一样,自右向左添加每三个数字添加一个逗号,当然也可能是我愚钝,高人会有更好的解决方法。如果您刚好知道一个更好的算法,请告诉,我会感谢您的。
正则表达有个叫lookahead的东西,我也不知道为什么翻译成顺序环视,姑且就这么叫吧,知道是这么回事就行了。顺序环视是自左至右查看文本,尝试匹配子表达式,如果能够匹配,就返回匹配成功信息。顺序环视又分为肯定型顺序环视和逆序环视,解决上面问题,当然是用到逆序环视了。
肯定型顺序环视用的特殊序列是:?=……来表示,省略号表示需要匹配的内容,匹配的顺序是习惯性匹配即自左向右,例如:?=\d,它表示如果位置右边的字符是数字则匹配成功,另一种环视的特殊序列是:?<=……来表示,例如:?<=\d,它表示如果当前位置的左边有一位是数字则匹配成功.
现在来解决本文开始部分提出的数字问题,代码段如下:
/(?<=\d)(?=(\d{3})+\b)/,/g
对代码段解释如下:
(?<=\d)是要限定匹配的位置,保证数字字符串刚好是3的倍数的时候不会出现 ,200,000 这种情况,即逗号的左边是必须有数字的
(?=(\d{3})+\b)是查询每个三个数字的位置,有意思的是段不匹配任何文本,而只是匹配一个位置,所以如果你试图输出每个匹配,那么显示的结果将是NULL
g表示全局替换,跟i表示忽略大小写一样的用法
顺序环视还有其他的内容,我们这里只用到肯定逆序环视和肯定顺序环视,还有否定逆序环视和否定顺序环视,读者可以举一反三,从名称上揣测他们的用法,顺带着找一些资料阅读下便可,这里不再赘述
在IE和Firefox中将Flash至于最底层
当一个网页的中既加入了弹出DIV效果,也有flash影片时,就会出现弹出层被flash挡住,这时候就需要将flash权重降低,至于网页的最底层,而且flash必须设置成透明,否则仍然会遮住,代码如下:
<div style=”z-index:-1;padding-top:10px; text-align:center; border:0;”>// 这里设置Z-index= -1将包含flash的层至于最底层
<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ width=”1003″ height=”490″
codebase=”http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab”>
<param name=”movie” value=”wall2.swf” />
<param name=”quality” value=”high” />
<param name=”bgcolor” value=”#000000″ />
<param name=”allowScriptAccess” value=”sameDomain” />
<embed src=”wall2.swf” quality=”high” bgcolor=”#000000″
width=”1003″ height=”490″ name=”wall2″ align=”middle”
play=”true”
loop=”false”
quality=”high”
wmode=”Opaque” // 这里设置针对firefox的透明效果
allowScriptAccess=”sameDomain”
type=”application/x-shockwave-flash”
pluginspage=”http://www.adobe.com/go/getflashplayer”>
</embed>
<param name=”wmode” value=”Opaque”> // 这里设置针对IE的透明效果
</object>
</div>