Pages

2012年12月9日 星期日


[JavaScript] event.keycode


keycode 8 = BackSpace BackSpace
keycode 9 = Tab Tab
keycode 12 = Clear
keycode 13 = Enter
keycode 16 = Shift_L
keycode 17 = Control_L
keycode 18 = Alt_L
keycode 19 = Pause
keycode 20 = Caps_Lock
keycode 27 = Escape Escape
keycode 32 = space space
keycode 33 = Prior

empty 或 isset 等函式差異表

empty 或 isset 等函式差異表

2012年12月3日 星期一


PHP正規表示法,驗證Email格式

PHP正規表示法,驗證Email格式

相信很多人都會用正規表示法來驗證字串吧!
但你了解那些正規表示法的意思嗎?
網路上有人整理出一些基本格式,就來和大家分享一下
怎麼驗證user輸入的字串,符可自已想要的格式。

preg_match('/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/', $email) 
// 正確: true, 錯誤: false

文章轉自[PHP] [其他] 無痛學習【正規表示法(Regular expressions)】

雖然PHP提供很多函式可以應用在表單資料格式的驗證上,但是,最方便的還是使用【正規表示法】去驗證資料格式(註:正規表示法有很多種格式,PHP使用的是POSIX),在此介紹一些最基本的用法...

PHP使用正規表示法進行驗證,需搭配preg_match()之類的函式來使用,例如:preg_match("/(正規條件字串)/","(欲驗證字串)"),如果欲驗證字串符合正規條件字串,則回傳true,反之回傳false。

基本用法:
preg_match("/b/","abcd");---true
preg_match("/b/","ABCD");---false
preg_match("/bc/","abcd");---true
preg_match("/bc/","abxxxcd");---false
preg_match("/abcd/","b");---false

2012年11月13日 星期二


PHP錯誤抑制符號


[PHP]PHP錯誤抑制 @ (小老鼠) 的用法
在連SQL或其他可能會出現錯誤訊息的動作
只要在前面加上@就可以抑制錯誤訊息
但並不表示就沒有錯誤,只是不讓使用者發現有錯誤而已

2012年11月10日 星期六


ASP.NET 呼叫 JavaScript


轉自【ASP.NET】【JavaScript】在ASP.NET 呼叫 JavaScript

許多程式開發者對於從主頁或內容中呼叫JavaScript感到非常的困惑,因此在這篇文章中,我們會看到從主頁或內容頁裡呼叫JavaScript時一些常見的問題以及它們的解決方案。

      這篇文章是兩篇系列文章的第一部分,此部份將用於探討在主頁(master pages)的JavaScript,下一篇文章會探討到在內容頁(content Pages)的JavaScript。


在主頁呼叫JavaScript

你可以在主要頁面呼叫一個已存在的JavaScript函式,也可以創造一個新的;這裡有一些常見的腳本。

1. 創造一個新的JavaScript函式,並且以主頁的Page_Load()事件呼叫之。

    C#

 protected void Page_Load(object sender, EventArgs e)
    {
        string someScript = "";
        someScript = "<script language='javascript'>alert('Called from CodeBehind');</script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "onload", someScript);
    }


2012年11月8日 星期四


PHP 比較include、include_once、require、require_once的差別


PHP 比較include、include_once、require、require_once的差別

include 和 include_once
都是用來引入檔案,後者可避免重複引入,故建議用後者。引不到檔案會出現錯誤息,但程式不會停止

require 和 require_once
都是用來引入檔案,後者可避免重複引入,故建議用後者。引不到檔案會出現錯誤息,而且程式會停止執行

2012年9月11日 星期二


C# 連續空白 轉成 一個空白

Str ="A B    C     D ";
//Str = input.Replace("&nbsp;", "");//刪除空白
Str = new Regex("[\\s]+").Replace( Str , " ");//連續空白 轉成 一個空白

2012年9月4日 星期二


每日一SQL-善用DATEADD和DATEDIFF

轉自 http://www.dotblogs.com.tw/lastsecret/archive/2010/10/04/18097.aspx
ps: SQL語法查詢
day(), month(),year() 
ex:
SELECT * FROM 資料表 WHERE  DATEADD(DAY, DATEDIFF(DAY, 0,  時間欄位  ), 0)='2012/09/04'
取資料型態為datetime的欄位==2012/09/04 (不含時間)
-------------------------------------------------------------------
上個星期去Tech-Day聽了幾場有趣的課,其中一堂是楊志強老師的
"深入了解T-SQL",講的很棒,雖然是第一堂八點四十的課,但講得很精采,讓我越聽越有精神。
今天來寫一個當天的範例,應該很多人看過,但我覺得語法滿有趣的。
用DATEADD及DATEDIFF組合起來,可以算出一季或是一個月的最後一天等等…

首先先分別來說明DATEADD及DATEDIFF
DATEDIFF是算兩個日期間的間隔,傳回帶正負號的整數
DATEDIFF ( datepart , startdate , enddate )
datepart為間隔的單位,startdate跟enddate應該看字面的意思就知道了吧。
因此如果語法寫
SELECT DATEDIFF(DAY, '2010-10-03','2010-10-04' )
出來的結果就是 1,代表相隔一天。

DATEADD是計算某日期加上一個數值,傳回的日期
DATEADD (datepart , number , date )
datepart一樣是單位,number是指定的數值,date是要被加上的原始日期
SELECT DATEADD(MONTH,2,'2010-10-06')
傳回的結果是2010-12-06 00:00:00.000

講解完這兩個函數使用之後,接著開始解釋某月的第一天怎麼計算
不過還是要再解釋一個東西
如果今天將0轉為datetime,如 select CONVERT(datetime,0,112)
出來的結果會是1900-01-01 00:00:00.000
因此我們將會用這個數值為基準
首先先計算今天到1900-01-01相差幾個月
語法是
SELECT DATEDIFF(MONTH,0,GETDATE())
算出來的數值是1329,代表相差了1329個月
再來將 1900-01-01加上1329個月,結果出來就是這個月的第一天了!
SELECT DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE()) ,0)
image

結果:2010-10-01 00:00:00.000

用這個方法就可以算出很多種不同的結果
例如如果是每個月最後一天的話,就是
SELECT DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE() ), -1)
原理是先算出今天跟 1899-12-31的月份差距( -1代表1899-12-31,-2就是1899-12-30依此類推)
接著再將1899-12-31加上月份差距,答案就是2010-10-31 00:00:00.000

如果是當季的最後一天,如下
SELECT DATEADD(QUARTER, DATEDIFF(QUARTER, -1,GETDATE() ), -1)

還有很多運用,就看自己怎麼發揮囉。

2012年8月26日 星期日


AS3.0 重載

本文轉自 http://www.2solo.cn/log/article.asp?id=508


注:本文为frank的学习笔记,转载请注明原文链接
更多笔记请参看:http://www.2solo.cn/log/article.asp?id=87
首先需要申明的一点是:在As3.0中仍然不支持方法重载,我们只能通过简单的模拟来实现重载.我在网上看到有不少人把override称为重载,这是不对的.事实上override提供给子类来定义替换继承的方法的,从动作上理解只是覆盖。而方法重载的原本定义为通过传入不同的参数来实现调用不同的方法.这两个是决然不可混为一谈的.
要说重载概念在As3中的实现却是很简单的.主要利用函数的...(rest)来支持不定量参数来传递参数,不清楚的可以看我这篇笔记.看我下面写的一个示例:
/*@
Author:frank
Site:www.2solo.cn
Date:2008.01.31
Info:测试重载
*/

package {
    import flash.display.Sprite;

    public class OverLoadSample extends Sprite {
        private var paramA:Number=1;
        private var paramB:String="1";
        private var paramC:Object={a:1,b:2};
        private var paramD:Boolean=false;
        public function OverLoadSample() {
            //分别给入不同类型的参数
            testOverLoad(paramA,"A");
            testOverLoad(paramB,"B");
            testOverLoad(paramC,"C");
            testOverLoad(paramD,"D");
            testOverLoad();
        }
        private function testOverLoad(...args) {
            switch (typeof(args[0])) {
                case "object" :
                    testFuncObj(args);
                    break;
                case "number" :
                    testFuncNum(args);
                    break;
                case "string" :
                    testFuncStr(args);
                    break;
                case "boolean" :
                    testFuncBool(args);
                    break;
                default :
                    testFuncDefault(args);
                    break;
            }

        }
        private function testFuncDefault(args):void {
            trace("this is a unknown type");
        }
        private function testFuncNum(args):void {
            trace("this is a number"+", param="+args[1]);
        }
        private function testFuncObj(args):void {
            trace("this is a object"+", param="+args[1]);
        }
        private function testFuncStr(args):void {
            trace("this is a string"+", param="+args[1]);
        }
        private function testFuncBool(args):void {
            trace("this is a boolean"+", param="+args[1]);
        }
    }
}
上例的输出结果为:
this is a number, param=A
this is a string, param=B
this is a object, param=C
this is a boolean, param=D
this is a unknown type
我这里利用第一个参数的不同类型来调用不同的方法,同时将整个args传入调用的方法来实现完整参数的传递.除开类型,还可以通过判断给定值,参数数量等不同的方法来实现重载.

2012年8月21日 星期二


Flash AS3.0
問題:輸入文字被限制
Flash Player 9的不支持動態文字的抗鋸齒,除非是圖片或嵌入字體