Time of Update: 2016-06-07
最近的項目在處理資金這一塊的功能,對人民幣金額的格式化輸出是必不可少的功能。這個功能比較獨立而且還比較福士化,所以封裝成了函數就發上去也算是方便大家。複製代碼 代碼如下:/** * 格式化金額 * * @param int $money * @param int $len * @param string $sign * @return string */function format_money($money, $len=2, $sign='¥'){ $negative = $money
Time of Update: 2016-06-07
許多同學在第一次使用curl的時候感覺一個頭兩個大(包括我在內),看著這一條條的curl_setopt函數完全摸不著頭腦,不過在你花10分鐘看了我的介紹後相信你以後也能輕鬆戲耍php的curl了首先,請看一個curl代碼(花10秒鐘,略看一遍,然後跳到後文)複製代碼 代碼如下:$data = "[...]"; $tuCurl = curl_init(); curl_setopt($tuCurl, CURLOPT_URL,
Time of Update: 2016-06-07
代碼比較多,但是比較簡單,一眼就看穿的,so,文字盡量少寫了。因為眾所周知的網路原因,gavatar也開始越來越慢,寫了一個小東西來解決這個問題,過程中遇到了get_headers這個函數,甚是憂傷,記錄下來,以免後來人踩坑。更新記錄,函數稍微改了一下,傳回值基本和之前序列化後的結果一致,暫時沒考慮支援子項也支援數組等(考慮細節效能,還想把沒用的http頭砍掉….)需求很簡單:擷取圖片的head資訊。偵錯工具的時候發現這個函數的調用很緩慢,即使綁定ip,有時候都能蹦到20多秒。尋思這個事情還是該
Time of Update: 2016-06-07
Thinkphp中的Model操作有兩個方法:add()和addAll複製代碼 代碼如下: $User = M("User"); // 執行個體化User對象 $data['name'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gmail.com'; $User->add($data); $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com'); $dataList[] =
Time of Update: 2016-06-07
在PHP中使用MVC越來越流行了,特別是在一些開源的架構當中。MVC足以應對大多數的情況,但還有一些情況是其不太適合的,如比較簡單的個人部落格,對於只有幾百篇文章量級的部落格,使用MVC讓人覺得有些太複雜了;同樣對於新浪等門戶網站,使用MVC,將有大量的檔案被載入,對於速度的影響是無法接受的。楓竹夢介紹MVC的基本原理及一種簡單的實現。如下介紹內容適用PHP開發。PHP中的MVCMVC[1]在軟體工程中是一種軟體的架構。從php的角度來講MVC有一些不同。Model(模型),程式應用功能的實現,
Time of Update: 2016-06-07
小數例子:PHP保留兩位小數並且四捨五入複製代碼 代碼如下:$n=0.1265489;echo sprintf("%.2f", $n); // 0.13大家可以看到我們用到了sprintf函數對$n進行了格式化%.2f是目標格式,其中2表示兩位f表示float(浮點型) 第3為小數6被四捨五入再看個例子複製代碼 代碼如下:$n=0.1265489echo substr(sprintf("%.3",$n),0,-1);//
Time of Update: 2016-06-07
發現之前有一個指令碼沒有寫完,簡單擴充了一下。擷取IP使用的是經典的邏輯,地理定位使用的是SINA的通用介面。使用方法詳見源碼:複製代碼 代碼如下:/* * GET LOCATION BY SINA IP INTERFACE * * @SOULTEARY 2013.04.14 */classIP{ private $args=array(); function__construct() { $this->args=self::init_
Time of Update: 2016-06-07
php上傳檔案是最最基礎的一個技術點,但是深入進去也有不少問題需要解決,這不,上傳中文檔案後,檔案名稱變成了亂碼。下面是問題代碼,很簡單:1.問題代碼html部分:複製代碼 代碼如下: php部分: 複製代碼 代碼如下: if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . ""; }else { echo "Upload: " .
Time of Update: 2016-06-07
PHP如何擷取FLV檔案時間呢,答案是fopen檔案後查看FLV檔案是HEX資料,並轉換為number。複製代碼 代碼如下:functionBigEndian2Int($byte_word,$signed=false){ $int_value =0; $byte_wordlen=strlen($byte_word); for($i=0;$i
Time of Update: 2016-06-07
這個類相當好用.作用麼,PHP做JSON傳遞GBK字元,比如中文,日文,韓文神馬的Unicode最合適不過了..1){// 多位元組字元 $return.='%u'.strtoupper(bin2hex(mb_convert_encoding($str,'UCS-2',$encoding))); }else{ $return.='%'.strtoupper(bin2hex($str)); } } return$return; }
Time of Update: 2016-06-07
最近發現,php運行自動載入類函數時總是逾時,跟蹤php慢查詢日誌,發現程式卡在了include某個類檔案時竟然逾時。 初步定位是io響應逾時,硬碟讀取有問題。 通過幾個命令來定位: iostat -d -x -k 1 10 // 運行10次查看iostat中wait參數很大,一般不超過5ms,await svctm這2個參數越接近,io效能越好。 參考別的部落格,await:
Time of Update: 2016-06-07
前段時間用Apache配合TP開發了一個小型網站,也算是我使用TP的第一次實戰。我習慣使用pathinfo模式,本地運行一切正常,然而部署到伺服器上時,由於對方使用的是Nginx,預設是不支援ThinkPHP的pathinfo模式,所以導致路徑錯誤,出現了頁面迴圈跳轉的問題,於是就把nginx下載下來在本地親自測試。
Time of Update: 2016-06-07
本文執行個體講述了symfony表單與頁面實現技巧。分享給大家供大家參考。具體如下:symfony開發很簡潔,但是功能的數量仍然很缺乏。現在是時候進行一些askeet網站與使用者之間的互動了。而HTML互動的根本--除了起連結--就是表單了。這裡我們的目標是允許使用者登陸,並在首頁的問題列表中進行翻閱。這對於開發而言是很快的,並且可以讓我們回憶起前面的內容。登陸表單在測試資料中存在使用者,但是程式卻沒有辦法來進行驗證。下面我們要在程式的每一個頁面添加一個登陸表單。開啟全域的布局檔案askeet/
Time of Update: 2016-06-07
關於程式開發中的表單批量提交策略很多時候一個表單太多的欄位,如何能夠高效擷取表單欄位,也為如何提神開發的效率和統一性?比如一個系統的某個有26個欄位,那麼我用表單的名稱用26個a到z的字母,你是選擇 ,,……,的傳統形式來做嗎?但是這種情況下如果做批量資料插入就不會有那麼簡潔了,因為插入或者編輯操作會是這樣的語句:特別是這樣長得蛋疼的SQL字串更悲催。複製代碼 代碼如下:$sql="INSERT kele_table(a,b,……,z) value(a='$a',b='$b',……,z='$z'
Time of Update: 2016-06-07
對於一個一維的php數組,如何清除其中值為空白的元素呢?直接的辦法是foreach迴圈一下,一個個判斷排除。不過這個方法還是略顯複雜,下面分享一下今天看到的一個方法,非常簡潔複製代碼 代碼如下:/** * 方法庫-數組去除空值 * @param string $num 數值 * @return string */public function array_remove_empty(&$arr, $trim = true) { if (!is_array($arr)) return
Time of Update: 2016-06-07
經常看到有新手問PHP有沒有類似asp的left函數或right函數,實現截取某字串左邊或右邊開始N個字元的函數。答案當然是有的。PHP中的substr函數就可以做的到,只不過PHP把二個函數合二為一了,這裡再給大家分享一個更加優秀的截取字串的函數。複製代碼 代碼如下:/** * 方法庫-截取字串-【該函數作者未知】 * @param string $string 字串 * @param int $length 字元長度 * @param
Time of Update: 2016-06-07
前幾天用PHP寫一個socket網路服務,在文檔裡看到socket_read和socket_recv這兩個方法時有點暈,乍一看這不是一樣的嘛,幹嗎還要給兩個不同的用法呢。看文檔沒看太明白,看了下源碼才搞清楚,在這裡記錄一下。先看一下這兩個函數的聲明:複製代碼 代碼如下:string socket_read ( resource $socket , int $length [, int $type = PHP_BINARY_READ ] )int socket_recv ( resource
Time of Update: 2016-06-07
關於產生訂單號的解決方案電子商務及類電子商務的系統越來越多,我相信訂單號問題是這類系統中最常見不過的一個問題了,但今天還是想談談。這幾天由於工作需要接手了另外一同事前期開發的一個交易系統,原本使用的是uniqid()函數產生的。理論上也是不會出現重複,但由於一些特殊的原因,不得不重新製作一款訂單號的產生函數複製代碼 代碼如下:/** * 產生唯一的訂單號 20110809111259232312 * 2011-年日期 * 08-月份 * 09-日期 * 1
Time of Update: 2016-06-07
Php是一個非常流行的web服務端指令碼語言。其實,php不僅僅可以在web伺服器中充當重要角色。在命令列一樣可以執行。本文中,筆者為各位介紹下php在命令列中的使用方法。1、 查看php的版本、配置在命令列中輸入php –v 即可查看當前php的版本。其他的選項有: –m、-i。筆者在這裡就不給出列子了。-m 會顯示當前php載入的有效模組。-i 則輸出無html格式的phpinfo。使用 –ini 選項可以輸出當前php載入ini設定檔的數量、路徑資訊。2、
Time of Update: 2016-06-07
眾所周知,php 內建的 strlen 與 substr 函數沒法處理中文字元,於是,我們會用 mb_ 系列函數替代。但是,沒有 mbstring 庫怎麼辦?這就需要我們自己寫一個來替代了,廢話不多說,先上代碼:複製代碼 代碼如下:if ( !function_exists('mb_strlen') ) { function mb_strlen ($text, $encode) { if ($encode=='UTF-8') { return preg_match_all('%(?