根据时段自动切换你的站点CSS风格网站能切换几套CSS风格早已不是什么新鲜事了。大家也都知道怎么去弄。早上发现一个有意思得站点 http://www./ 同样是切换风格。不过他做了点小小的调整。站点会根据当时的时间自动调整站点风格。作者为站点制作了早上、下午、夜晚三套皮肤,主要是分别制作了背景。12点以前系统会使用早上的皮肤,过了12点,站点会自动替换成下午的风格,5点后则替换成夜晚的风格。 主要的功能实现是靠在头部的这段判断代码,很容易理解。有兴趣可以自己试试。 CSS版代码如下:
<link rel="stylesheet" type="text/css" href="<?php $hour = date("H"); if ($hour < 12) echo "morning.css"; elseif ($hour < 17) echo "day.css"; else echo "night.css"; ?> " /> ASP版代码如下:
利用Google實現站內搜索一分钟加入"搜索本站"功能
http://www./2006/12/blog-post_22.html 用Google给你的站内搜索加上统计功能 http://www./post/custom_search_engine.html Google 公共服务搜索 http://www.google.cn/intl/zh-CN/searchcode.html 几种所见所得的在线编辑器的分析原贴来自: http://bbs./showthread.php?p=16247#post16247
作者:blue2004(转载请标明) 1.FCKeditor 编辑器 FCKeditor is compatible with most internet browsers which include: IE 5.5+ (Windows), Firefox 1.0+, Mozilla 1.3+ and Netscape 7+. 最新版本:FCKeditor 2.0 语言环境:多国语言 特性功能:所见所得,支持平台众多,支持XHTML 1.0,文本格式设置,常见的编辑,复制,粘贴,撤销,文件上传等功能 授权方式:Open Source & Free 官方地址:http://www./ 下载地址:http://www./download/default.html 演示:http://www./demo/default.html 小节:FCKeditor的2.0版比1.6版有了许多的改进。首先是FCKeditor的文件结构更加清晰, 可以更方便地将其部署在自己的系统中。另外2.0版开始支持了Firefox浏览器 2.WebEditor WebEditor系列文档控件,采用了ESS专业电子签名和电子盖章的技术,除继续支持手写签名,电子印章,痕迹保留外, 该版本采用了我们强大的B/S通讯技术,能够自由的将服务器数据库 最新版本:WebEditor[V4.3.0.0 OCX版] 语言环境:简体中文 技术特性 采用IE5.0以上版本内置的传输协议,通讯性能稳定,高效。 采用标准HTTP通讯端口80,使用方便,无需特别配置、安全性好、更无需特别设置防火墙。 采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。 采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。 采用了Com组件和JavaBean组件技术,很好的实现了跨平台系统,便于开发。 官方地址:http://www./ 演示:http://www./WebEditor/Demo.asp 下载:http://www./download/index.asp#item1 小节:这个编辑器很具有中国特色的,但必须支持安装WebEditor插件,才能正常运行 对于很多用户来说,,这个是无法接收的. 3.InnovaStudio WYSIWYG Editor在线编辑器WYSIWYG 英文:What You See Is What You Get(所见所得) 一款基于web的WYSIWYG(所见即所得)的HTML编辑器,支持ASP, PHP, ASP.NET 最新版本:InnovaStudio WYSIWYG Editor version 2.9 功能特性:快速加载,融合所有的HTML标签,全屏编辑模式,所见所得预览,拼写检查. 特有的嵌入式WEB编辑. 官方:http://www./ 演示:http://www./editor_tutorial.asp 下载:官方好像都是收费的,,自己去网上搜索找找,好像有人已经做过有2.0的汉化版 小节:采用DHTML, JavaScript 构件的WYSIWYG也有很多不足之处,由于代码放在远程服务器, 一些控件事先没有下载到客户端,使得一些操作速度变慢,那些加入了ActiveX 控件的更慢, 另外它无法在网页里直接调用CSS,所以在操作框里的界面效果和尺寸和实际上的界面有差距。 有很多WYSIWYG对各种浏览器还不兼容,而且有的也要在IE的高版本下才能正常运行(此段出自老鬼的blog). 4.eWebEditor在线编辑器 eWebEditor是基于网页的、所见即所得的在线HTML编辑器。她能够在网页上实现许多桌面编辑软件 (如:Word)所具有的强大可视编辑功能;她是一个真正的绿色软件,不需要在计算机上安装 任何的客户端软件;她的易用使得WEB开发人员只要一行代码即可完成调用。 最新版本:Version 3.6 (ASP版、PHP版、JSP版、ASP.NET版) 官方:http://www./ 演示:http://ewebeditor./demo.asp 下载:http://ewebeditor./download.asp 功能特性: 纯静态:大大提高了效率,最佳的融入您的产品; 多样式支持:您只需要在您的整个网站中使用一个eWebEditor; 自动提交:无需在提交按钮中加入脚本进行处理; 自动获取远程文件:把别人服务器上的图片等文件自动传到自己的服务器; 相对或绝对路径:完全摆脱了站点或系统或目录迁移而带来的路径问题; 图形热点链接:始创能够在线编辑实现图形的热点链接功能; 多种编辑模式:HTML代码模式、可视设计模式、纯文本模式、预览模式; 大小自适应:可以按你调用的宽度和高度自适应编辑器的大小; 内附文件上传功能:自带有从客户端直接上传到服务器端的功能; 完善的接口:您可以通过接口实时控制或者获取编辑器的内容或者状态; 小节:我个人比较推荐这个编辑器,为什么呢?除了他是国产的外,比较符合国人的习惯,另外也可能是众多编辑器, 唯一还带后台管理模式,可以直接在后台管理编辑模式, 另外接口定制非常容易,具体的自己可以去官方下载回来看看. 5.htmlarea is a directory of browser based wysiwyg editor components for use in CMS (content management software) and other web software. htmlArea是一款非常优秀的所见即所得编辑器,被使用在CMS系统或其他的WEB系统中.. 语言环境:多国语言版 版本:version 3.0 官方:http://www./ 演示:没找到, 下载:官方没找到下载地址,我自己找了个3.0的版本 http://www./mp3/chinahtml@_HTMLArea3.rar 小节:这个编辑器调用也非常方便, 已经广泛用在各种CMS和blog系统里,记得bo-blog,phpArticle里整合了这个编辑器. 6.XStandard XHTML (Strict or 1.1) WYSIWYG Editor 也是所见所得,比起前几个,,它已经完全支持XHTML 1.1的严格验证, 这个非常厉害 @@ 版本:XStandard Version 1.6.2 官方:http:/// 下载:http:///download.asp 演示: 小节:这个编辑器,我也很少在国内的CMS,blog上见到有人使用,当然一个原因就是它是一个共享软件. XStandard Lite是免费的 XStandard Pro是30天的试用期,而且价格还不菲$179 7.Cross-Browser Rich Text Editor The cross-browser rich-text editor (RTE) is based on the designMode() functionality introduced in Internet Explorer 5, and implemented in Mozilla 1.3+ using the Mozilla Rich Text Editing API. The cross-browser rich-text editor now includes table support (as of 2/10/2005) as well as an option to generate xhtml-compliant code 官方:http://www. 演示:http://www./rte/demo.htm 下载:http://www./rte/demo.htm 小节:这个编辑器更少看到有人用,可能是我自己孤陋寡闻.. 以上的几种编辑器总体都不错,有心去找找,网上还有不少不错的编辑器,,找到一个合适自己的就行了,, 对于那些大型的CMS开发者,一个好的编辑器能省了使用者很多不必要的操作, 而且使web代码更为规范,清晰 以上内容均属于一家之言,如有纰漏,请指出,欢迎大家讨论.. 抽象出JSCalendar,可直接使用,非常簡單1.引入JSCalendar
<!--導入calendar --> <script type="text/javascript" src="styles/calendar/calendar.js"></script> <script type="text/javascript" src="styles/calendar/calendar-setup.js"></script> <script type="text/javascript" src="styles/calendar/lang/calendar-en.js"></script> <link href="styles/calendar/calendar-win2k-cold-1.css" type="text/css" rel="stylesheet"/> 2.直接使用
<input type="text" id="cal-field-1" name="duedate" value=""/> <button type="button" id="cal-button-1">...</button> <script type="text/javascript"> Calendar.setup({ inputField : "cal-field-1", ifFormat : "%Y-%m-%d", button : "cal-button-1"}); </script> 注意: inputField : "publisherDate", // id of the input field ifFormat : "%Y-%m-%d", // the date format button : "publisherDateBt" // id of the button
正则表达式學習正則表達式,是用來匹配字符串的一種工具。比如說:要驗證一個電子郵件地址是否合法,要在一個html源文件中找出所有的以<Hn>...</Hn>標識的那部分。還比如在delphi中,我們可以利用支持正則表達式的cxMaskEdit控件來格式化輸入。
一、匹配單個字符 字面匹配 字面匹配就是按原原本本的匹配文字,比如說: 字符串:i have a dream. 正則表達多:rea 那麼被匹配結果是:i have a dream. 任意(任一)匹配 任意匹配就是以含有特定意義的通配符來匹配,就像SQL中的下劃線,它匹配任意一個字符。在正測表達式中,此通配符為半角句點.舉例如下: 字符串:i have a dream. 正則表達式:r.a 那麼被匹配結果是:i have a dream. 說明:如果.匹配任一字符,然只想匹配.本身,方法是在其前面加上右斜線,就如同c語言中的轉義字符,即\.,如前例: 字符串:i have a dream. 正則表達式:\. 那麼被匹配結果是:i have a dream. 像這類的轉意字符還有很多,在後面的部分會有提到。 二、枚舉型匹配 多選一匹配 多選一匹配相當於程序c語言中的枚舉數據類型,它是以方框號來描述的,舉例來說: 字符串:i have a dream,the dream was to be a doctor. 正則表達式:t[hbr]e 那麼匹配結果是:i have a dream,the dream was to be a doctor. 多選一匹配的區間表示 舉例來說: 字符串: mydoc1.doc mydoc2.doc mysheet1.xls file5.txt 正則表達式:[a-z]c[1-9]\. 那麼匹配結果是: mydoc1.doc mydoc2.doc mysheet1.xls file5.txt "Anything But"匹配 意思是除...之外,就是說匹配除了指定字符之外的匹配,表示方法是在表式前加上^,舉例來說: 字符串: apac1.xls europe2.xls sam.xls 正則表達式:[ns]a[^0-9]\.xls 那麼匹配結果是: europe2.xls sam.xls na1.xls 三、元字符 元字符,就是在正則表達式中,用於描述字符的字符,如前面的.,它代表任意一個字符。 再舉例說,前面講到的方括號用於描述枚舉型匹配,那麼如果要表示方括號本身,就需要在其前面加上右斜線,如: 字符串: var myArray = new Array(); ... if (myArray[0] == 0) { ... } 正則表達式:myArray\[0\] 匹配結果: var myArray = new Array(); .... if (myArray[0] == 0) { ... } 下表列出幾個比較常見的元字符 -------------------- [\b] 退格符 \n 換行符 \r 回車符 \t Tab \d 數字(等價於[0-9]) \D 非數字(等價於[^0-9]) \w 字母(等價於[a-zA-Z0-9_]) \W 非字母(等價於[^a-zA-Z0-9_]) \s 任意空白字符(等價於[\f\n\r\t\v]) \S 任意非空白字符(等價於[^\f\n\r\t\v]) ----------------------- 四、重復匹配 重復匹配就是指匹配多次,下面舉例說明一個多次匹配的例子這個例子匹配文本中所有的電郵地址: 文本: Send personal email to ben@forta.com. For questions about a book use support@forta.com. Feel free to send unsolicited email to spam@forta.com (wouldn't it be nice if it were that simple, huh?). 正剛表達式: \w+@\w+\.\w+ 匹配結果: Send personal email to ben@forta.com. For questions about a book use support@forta.com. Feel free to send unsolicited email to spam@forta.com (wouldn't it be nice if it were that simple, huh?). 說明:上面的正則表達式中,+代表其前置內容可重復一或多遍。 與+類似的還有*和?,*代表其前置內容可重復零或多遍,?代表其前置內容可重復零或一遍。 指定重復次數的重復匹配 若要指定重復次數,語法為{n},舉例說明: 文本: <BODY BGCOLOR="#336633" TEXT="#FFFFFF" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0"> 正則表達式: #[\d]{6} 匹配結果: <BODY BGCOLOR="#336633" TEXT="#FFFFFF" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0"> 指定重復次數區間的重復匹配 語法為{n,m}{n,},舉例說明: 文本: /8/03 10-6-2004 2/2/2 01-01-01 正則表達式: \d{1,2}[-\/]\d{1,2}[-\/]\d{2,4} 匹配結果: /8/03 10-6-2004 2/2/2 01-01-01 幾個等價的語法標識 -------------- * *? + +? {n,} {n,}? -------------- 五、起止符 單詞起止 看下面這個例子。 文本: The cat scattered his food all over the room. 正則表達式: cat 匹配結果: The cat scattered his food all over the room. 再看下面這個例子。 文本: The cat scattered his food all over the room. 正則表達式: \bcat\b 匹配結果: The cat scattered his food all over the room. 對比以上兩個例子,我們可以看出來\b是一個起止符,表示其前或其後沒有其它非空字符,相當於匹配一個完整的單詞。 再看兩個例子,加深對\b的理解。 文本: The captain wore his cap and cape proudly as he sat listening to the recap of how his crew saved the men from a capsized vessel. 正則表達式: \bcat 匹配結果: The captain wore his cap and cape proudly as he sat listening to the recap of how his crew saved the men from a capsized vessel. 文本: The captain wore his cap and cape proudly as he sat listening to the recap of how his crew saved the men from a capsized vessel. 正則表達式: cat\b 匹配結果: The captain wore his cap and cape proudly as he sat listening to the recap of how his crew saved the men from a capsized vessel. 行起止 如果說想要匹配jave語言代碼一整行單行的注釋,可以參考下面這個例子。 文本: function doSpellCheck(form, field) { // Make sure not empty if (field.value == '') { return false; } // Init var windowName='spellWindow'; var spellCheckURL='spell.cfm?formname=comment&fieldname='+field.name; ... // Done return false; } 正則表達式: ^\s*//[\n\r]*$ 匹配結果: function doSpellCheck(form, field) { // Make sure not empty if (field.value == '') { return false; } // Init var windowName='spellWindow'; var spellCheckURL='spell.cfm?formname=comment&fieldname='+field.name; ... // Done return false; } 說明: 如前所講,元字符^如果出現在[]中,表示否定,否則表示從行的起始; 元字符$表示至行的結束。 六、SubExpression SubExpression是子表達式的意思,將正則表達式分層,一個表達式中可以包含子表達式,SubExpression用圓括號()來分隔,()內的表達式作為一個個體來對待,考慮下面這個例子。 文本: Hello, my name is Ben Forta, and I am the author of books on SQL, ColdFusion, WAP,Windows 2000, and other subjects. 正則表達式: {2} 匹配結果: Hello, my name is Ben Forta, and I am the author of books on SQL, ColdFusion, WAP,Windows 2000, and other subjects. 說明:為什麼會沒匹配到呢?因為{2}只修飾其前一個描述符,也就是;,所以這樣是匹配不到的。但是如果正則表達式是: ( ){2} 則匹配結果為: Hello, my name is Ben Forta, and I am the author of books on SQL, ColdFusion, WAP,Windows 2000, and other subjects. 子表達式的嵌套與枚舉 SubExpression是可以嵌套的,看下面這個例子。 假設我們要匹配一段文字中的考試成績,這個成績是百分制的數字,小數位最多只有一位,且必須是0.5,假設文本如下: 小明的考試成績是95.5,小華的考試成績是100,小劉的成績是32,小張的成績是76.3。 正則表達式: ((0|[1-9][\d])(\.5))|(0|[1-9][\d])|100 那麼匹配結果是: 小明的考試成績是95.5,小華的考試成績是100,小劉的成績是32,小張的成績是76.3。 說明:多外並列的多選一的subexpression之間用|隔開,表示或者的意思。 七、前引匹配 請看下面這個例子。 文本: <H2>Wireless</H2> Information about Bluetooth, 802.11, and more. <H2>This is not valid HTML</H3> 正則表達式: <[hH][1-6]>.*?</[hH][1-6]> 匹配結果: <H2>Wireless</H2> Information about Bluetooth, 802.11, and more. <H2>This is not valid HTML</H3> 很明顯,顯後一行<H2>This is not valid HTML</H3>的匹配結果不是我們想要的,因為它是以<H2>開頭卻以</H3>結尾。 那麼如果要做這一點,正則表達式該如何寫呢? 可以這樣寫: <[hH]([1-6])>.*?</[hH]\1> 那麼這樣的話,上述例子的匹配結果就是: <H2>Wireless</H2> Information about Bluetooth, 802.11, and more. <H2>This is not valid HTML</H3> 說明:\1表示參照引用前面表達式中的第一個subexpression,如果是\2,就表示參照引用前面表達式中的第二個subexpression.可以看出上述例子中\1參照引用了([1-6]),這個“參照引用”含有一個順序一致的意思,就是說,如果([1-6])匹配的是1,那麼這裡也只能匹配1,如果([1-6])匹配的是2,這裡也只能匹配2。 八、頭尾條件匹配 舉例說文本: <title>some words</title> 我只想要匹配以<title>開始,並以</title>結束的內容,但匹配的結果不要包含<title>和</title>本身。那麼,正則表達式可以這樣寫: (?<=<title>).*(?=</title>) 這樣的話匹配結果就是: <title>some words</title> 說明:?<=後跟著的是匹配的結果的前置內容,?=跟著的是匹配結果的後置內容。而且,如果前置或後置內容是多個字符的話,請用()將其包起來。 相反的情況 好,那麼我們很自然的會想到,我要匹配不以<title>和</title>為起始的內容。這時,用另外兩個語法符號: (?!)和(?<!) 如下例。 文本: <title>some words</title> <body>some words</body> 正則表達式: (?<!<title>).*(?!</title>) 匹配結果如下: <title>some words</title> <body>some words</body> |
|