烈火建站學院轉載 平時積累的PHP技巧,與大家分享,可能有一些很基礎,但每個人都有大腦短路的時候,常拿出來翻翻也沒有壞處......
如果有什麼錯誤 希望指出,或是跟貼分享自己積累的技巧
PHP代碼
public function GetIP(){
if (getenv("HTTP_CLIENT_IP")&& strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) {
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("HTTP_X_FORWARDED_FOR")&& strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");
}
elseif (isset($_SERVER['REMOTE_ADDR'])&$_SERVER['REMOTE_ADDR']&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];
}
else
$ip = "unknown";
return($ip);
}
2、跳轉 <meta http-equiv='refresh' content='3; url =1.php'>
3、 /(^[0-9]|^[1-9][\d]{1,3})($|[\.][\d][1-9]$|[\.][1-9]$)/; 一個價格匹配的正則
4、js 取得 1-10的隨機數 document.write(Math.floor(Math.random()*10+1)); //1-10隨機數
5、mysql 取得隨機記錄 SELECT * FROM lzyblog_shop_category ORDER BY RAND() limit 5
6、js: onpropertychange當對象屬性發生變化的時候觸發事件
7、篩選出 年月出來的 SQL
SELECT regdate FROM `analyse_system` GROUP BY year( regdate ) + month( regdate ) ORDER BY `regdate` DESC
或是 SELECT regdate FROM `analyse_system` GROUP BY left(regdate,7) ORDER BY `regdate` DESC
8、strrev 字符串翻轉
9、basename(__FILE__); 獲得文件名稱
10、implode(間隔符號,數組) explode(間隔符號,字符串)
11、加下劃線的 CSS
<a href="#" style="text-decoration:none; border-bottom:#FF0000 1px dashed;">asdfasdf</a>
12、perl 的效率問題
1)處理文本文件,一般是逐行讀入,在這樣的循環裡,絕不要使用外部shell命令,例如,假如要將分析內容寫往其他文件,那麼該老老實實的使用perl 自己的寫文件句柄的方式,而不要使用shell的"echo $_ >;file"之類的命令,後者比前者慢10000倍。
2)在匹配正則表達式時,如果匹配裡含有"&"字符,那麼記得在前面加個"\"轉義,否則perl會把匹配的內容復制一份以供以後參考,這導致程序其慢無比;
3)在匹配正則表達式時,盡量不要使用i選項(區分大小寫),請將不區分大小寫的區域盡量縮小,例如/ID=something\&/i,如果只對ID不分大小寫的話,那麼應該這麼寫:/[Ii][Dd]=something\&/,後者比前者快不止100倍;
4)在匹配正則表達式時,如果匹配項是固定不變的,那麼請使用o選項,這表示只對正則表達式編譯一次,例如/jsp/io比/jsp/i好很多。
5)while循環要比for/foreach循環效率高,
6)多用小括號,少用$&,$`,$'
7)多余多行匹配推薦用s/m修飾符,不推薦使用$*
13、linux修改時間
date -s 07/5/10 &&
date -s 09:28:00 &&
#clock -w
14、 checkdate 用 UNIX時間戳驗證時間的正確性
15、cvs 的建立
環境設置:指定CVS庫的路徑CVSROOT
tcsh
setenv CVSROOT /path/to/cvsroot(指定CVS路徑)
bash
CVSROOT=/path/to/cvsroot(指定CVS路徑) ; export CVSROOT
初始化:CVS版本庫的初始化。
cvs init
導入庫
$ cd wdir(項目的目錄)
$ cvs import -m "Imported sources" yoyodyne/rdir(期望在CVSROOT下的目錄名) yoyo(作者) start
導入
$ cd ..
$ cvs checkout yoyodyne/rdir(項目名) # Explanation below