目前分類:PHP筆記 (48)

瀏覽方式: 標題列表 簡短摘要

Javascript可以透過navigator物件就輕鬆取得瀏覽器的資訊,但是PHP比較麻煩多了,一般來說雖然可以從$_SERVER['HTTP_USER_AGENT']取得相關的資訊字串如下:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3

但是事實你可能不想要那麼長的資訊,只是想要單純的知道,他是Firefox還是IE或是其它Broswer就好,項多再加個版本。不過要剖析這個字串實在令人頭大,因為不同Broswer的,他所出現的字串資訊都不一樣。後來拜google大仙,才知道PHP原來有一個函式叫get_broswer老早就把我所擔心的事解決了!

低溫烘培 發表在 痞客邦 留言(0) 人氣()

因為Notepad++對於PHP的關鍵字不足,有些關鍵字都不會變色,所以寫了一個class能去抓官方PHP的網頁函式清單

網友bcse提醒我其實PHP有內建的get_defined_functions、get_class_methods…等函式,可以直接取得相關關鍵字,看來我做了蠢事了。 不過也多虧這次的做法,讓我了解phpQuery的使用方法

低溫烘培 發表在 痞客邦 留言(0) 人氣()

因為工作的地方是用M$系列的,所以之前部門的開發就是用M$SQL的預儲程式(stored procedure)來執行與資料的讀取的動作,說真的,超不習慣的啦!雖然他們的立場是覺得stored procedure可以重複利用,可是我覺得這跟直接把SQL用刻在php程式碼裡,良好的設計(指物件寫法),也是可以重複利用呀,而且PHP可以用的函式又多,要去刻SQL也方便多了。如果硬是要說stored procedure好處,可能就是效能加快,安全性上升(有差那麼多嗎?個人不覺得)。

anyway...畢竟在工作的地方就是配合大家,所以我從google大仙去搜尋如何用PEAR::DB來呼叫已經寫好的預儲程式,不過相當殘念的,似乎這種文件非常少(>"<�畢竟在php領域會用預儲程式去做資料庫存取的本來就很少),不過還是難得讓我找到這篇文章「Programming with SQL Relay using the PHP Pear DB API」。這篇文章把PEAR::DB所有連結資料庫與執行SQL的部分,做了滿多的範例,以下我就直接針對預儲程式的部分來說明(接下來的程式都是從文章擷錄而來)

低溫烘培 發表在 痞客邦 留言(0) 人氣()

>_<之前那篇排列組合產生器 Permutations Generator for PHP有BUG啦,那個方法是把字串當作陣列索引去排列組合,再透過索引去重排陣列的元素,熊熊然給他忘了當陣列元素如果11個以上,那麼產生的索引字串就是"012345678910",呃...= =折成陣列變成了array(0,1,2,3,4,5,6,7,8,9,1,0)而不是array(0,1,2,3,4,5,6,7,8,9,10),所以就出錯啦!!

低溫烘培 發表在 痞客邦 留言(0) 人氣()

本篇程式有BUG,請改參考Permutations Generator (fixed) for PHP

因為上一篇文章排列組合公式函式只能算出組合的總數,所以最近趴文研究了一下,找到有一個現成的函式,不過似乎有點不足的地方,於是我重新修改了一下,增加可用性。目前這個版本是PHP,有時間我會再另發表一篇javascript的版本。還有...如果要拿去用的話>_<�,通知一下吧,只是讓我知道這個程式有幫助到別人心裡也安慰點。另外,如果你想要的不是排列,而且是組合,那麼我之前也有寫一個排列組合 Combination for PHP的函式,可以參考看看。

低溫烘培 發表在 痞客邦 留言(1) 人氣()

此篇只是將以前數學課排列組合的公式寫成小函式,基本上沒什麼太大的功用,因為通常我們想要的是列出組合,而不是計算總共有多少組合數

低溫烘培 發表在 痞客邦 留言(0) 人氣()

呃...無聊了一下,所以將Cake PHP中core.php設定檔註解的部分翻譯,開頭的SVN資訊就不翻了。如果第一次接觸cake PHP的使用者對於設定檔的內容想瞭解一下的話,不妨可以大致的看一下,若有其它cake PHP專業玩家看翻譯的內容有問題,請不吝指教,留個言給我^_^ 如果你的版本是cake_1.2.0.7125-rc1,你可以直接複製,將他複蓋貼上你原本的core.php,但是注意你必需留意你原本的設定,甚至先將異動的部分抄錄起來,再做變更

低溫烘培 發表在 痞客邦 留言(0) 人氣()

in_array()的用途,是來判斷某個值是否存在陣列之中,回傳的結果就只有true或false。但是有時候我們除了要判斷他是否有在陣列中外,又要順便異動這個陣列元素,比如說「搜尋陣列中值為D的元素,並刪除他」,這時候我們就可以使用array_search()來完成這個工作。

低溫烘培 發表在 痞客邦 留言(1) 人氣()

後來發現有BUG,所以我修正了一下【修正於2009-04-15】

沒想到我的舊文章身份證驗證程式 for PHP人氣竟然是最高的,後來用了google大仙查了之後,發現有更精簡的寫法,所以就花了一點時間修改之前寫的方法,XD如果有需要的人就用精簡版吧,如果程式碼有看不懂的留個回應我再做補充吧!繼續閱讀後面也包含了產生器

低溫烘培 發表在 痞客邦 留言(1) 人氣()

這幾天逛Blog發現到一篇文章,是由Kai所寫的[PHP]隨機撲克牌,內容提到一個題目,一時技癢也寫了一段程式碼,答案和Kai所寫的一樣,不過採用了大量的陣列函式,大家互相交流吧!

低溫烘培 發表在 痞客邦 留言(0) 人氣()

常發生的情況是在檔案名稱以數字來命名時,例如"img12.png", "img10.png", "img2.png", "img1.png",通常預期排序後的結果應該img1.png、img2.png、img10.png、img12.png,但是結果卻是img1.png、img10、img12、img2,這時候你就可以使用陣列函式中的特殊排序natsort(),以下我就直接摘錄官方的程式碼為範例:

低溫烘培 發表在 痞客邦 留言(0) 人氣()

Kevin van Zonneveld這個網站收集各方好手,用Javascript去模擬實作了很多個PHP好用的函式,真是很棒!

低溫烘培 發表在 痞客邦 留言(0) 人氣()

由於電腦的資料是以二位元運行,所以值為2的冪數時,也就是值為2、4、8、16、32…時,利用位元偏移的運算可以加快程式的執行,以下範例:

低溫烘培 發表在 痞客邦 留言(0) 人氣()

指數運算也可以縮減成乘法,下面是將PHP內建的pow()函式與自訂用乘法的pow2()所做的執行時間比較

低溫烘培 發表在 痞客邦 留言(0) 人氣()

以下是我寫來測試對於迴圈內的程式,同樣的結果,不同樣的寫法所花費的時間比較

低溫烘培 發表在 痞客邦 留言(0) 人氣()

此篇是json_encode() for PHP4的延伸內容,我試著去比較使用PHP5.2內建函式與外載JSON.php建立的物件函式所執行的json編碼動作執行時間,並且順便測試了使用json_format()所增加的額外時間。

低溫烘培 發表在 痞客邦 留言(0) 人氣()

又是一個程式碎片的加強,= =真是吃飽太閒,這次的改寫是舊文章將檔案大小轉換易讀單位的延伸,不過說實在話,這個改寫實際的意義並不大,原本那個應該就很夠用了,這次追加的功能就只是"可以指定要轉換的單位",程式碼如下:

低溫烘培 發表在 痞客邦 留言(0) 人氣()

注意!!最近我在使用大量資料時,發現json_format()無法運作了。後來查到主因來至於json_format()的第15行 $json = json_encode($json_obj);,原作者似乎進行了一個多餘的動作,又將json再編碼一次,這行程式使得在進行大量資料轉換時會產生逾時的不明錯誤,故將此行拿掉,就可以正常運作了。
【SANKAI於2008-04-28補充】

在PHP版本5.2.0之前,json_encode函式是不存在的,通常會發生這種情況最常見的原因就是所承租的主機所提供的PHP版本太舊,最近有在使用AJAX技術的人,想必一定會用到此函式,幸虧已經有高手Michal Migurski寫好這個好用的類別JSON.php,他的使用方法如下:

低溫烘培 發表在 痞客邦 留言(0) 人氣()

事實上,ADODB很早就知道了,只不過那時候決定使用PEAR::DB,為什麼呢?因為他的官方網址是pear.php.net,覺得似乎是PHP官方所支持的套件(官方加持*口*),應該比較好吧(膚淺呀!),但是最近看討論區,大家似乎都討論的是ADODB,沒有人提到過PEAR::DB,呃…有這麼冷門嗎=.=,心中一個疑問就不自主的產生了,沒錯!就如同標題所言,PEAR::DB和ADODB倒底哪個好呢?當然最直接的方法就是自己去做測試,不過網路博大精深,還是向google大仙請益是最快的吧!

低溫烘培 發表在 痞客邦 留言(0) 人氣()

php雖然有filesize的函式,但是取得的單位卻是Bytes,不方便閱讀,所以我試著寫一個轉換單位的函式來使用,程式如下:

低溫烘培 發表在 痞客邦 留言(0) 人氣()

«12 3