Time of Update: 2017-01-19
資料庫訪問 (DAO)Yii 包含了一個建立在 PHP PDO 之上的資料訪問層 (DAO). DAO為不同的資料庫提供了一套統一的API. 其中ActiveRecord 提供了資料庫與模型(MVC 中的 M,Model) 的互動,QueryBuilder 用於建立動態查詢語句. DAO提供了簡單高效的SQL查詢,可以用在與資料庫互動的各個地方.Yii 預設支援以下資料庫 (DBMS): MySQL MariaDB SQLite PostgreSQL CUBRID: 版本 >=
Time of Update: 2017-01-19
當輸入j後,會觸發ajax效果,從後台擷取相應的名字中帶有j的資料,並展示在suggestions中。代碼實現如下:實現ajax需要三個檔案,一個是html的表單檔案,一個是js的核心檔案,一個是php的後台檔案。下面的是html檔案,當鍵盤按下時觸發showHint方法,在showHint方法中會有ajax的核心內容,執行個體化,擷取地址,擷取資料並展示等等。複製代碼 代碼如下:<html><head><script src="clienthint.js">
Time of Update: 2017-01-19
PclZip簡介PclZip是一個很強大的壓縮與解壓縮zip檔案的PHP類,PclZip
Time of Update: 2017-01-19
iconv( "UTF-8", "gb2312//IGNORE" , $FormValues['a']) ignore的意思是忽略轉換時的錯誤,發現iconv在轉換字元"—"到gb2312時會出錯,如果沒有ignore參數,所有該字元後面的字串都無法被儲存。 另外mb_convert_encoding沒有這個bug,所以最好的寫法是: mb_convert_encoding($FormValues['a'], "gb2312", "UTF-8"); 但是需要先enable mbstring
Time of Update: 2017-01-19
下面我畫了一個圖示範 client 和 server 之間建立 websocket 串連時握手部分,這個部分在 node 中可以十分輕鬆的完成,因為 node 提供的 net 模組已經對 socket 通訊端做了封裝處理,開發人員使用的時候只需要考慮資料的互動而不用處理串連的建立。而 php 沒有,從 socket 的串連、建立、綁定、監聽等,這些都需要我們自己去操作,所以有必要拿出來再說一說。① 和 ② 實際上就是一個 HTTP
Time of Update: 2017-01-19
大部分人的圖片上傳都是儲存一個路徑到資料庫,這樣在插入時確實快,也符合web的特點,但是在刪除時就很麻煩,需要找到檔案並刪除,該代碼能夠把代碼直接存入資料庫,刪除時一併刪除。請注意:這樣的話資料庫大小會激增,請酌情使用表結構 複製代碼 代碼如下:CREATE TABLE `upload` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(20) NOT NULL,
Time of Update: 2017-01-19
因為一些特殊字元的顯示效果的原因不得不把習慣的utf-8工程改成了GBK,由於使用了ajax技術,又涉及到了老問題——編碼轉換。一些表單驗證需要返回json資料,php的json_encode函數只支援utf-8編碼,無奈只得iconv了,需要達到的效果是GBK數群組轉換成utf-8數組傳給json_encode函數。最開始的思路,將數組序列化後用iconv函數轉換編碼,之後再還原序列化,代碼如下:複製代碼
Time of Update: 2017-01-19
Php: BCMathbc是Binary Calculator的縮寫。bc*函數的參數都是運算元加上一個可選的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale沒有提供,就用bcscale的預設值。這裡大數直接用一個由0-9組成的string表示,計算結果返回的也是一個 string。bcadd — 將兩個高精度數字相加 bccomp — 比較兩個高精度數字,
Time of Update: 2017-01-19
列目錄時, dir *.txt或ls *.txt中的*.txt就不是一個Regex,因為這裡*與正則式的*的含義是不同的。 Regex是由一般字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。Regex作為一個模板,將某個字元模式與所搜尋的字串進行匹配。3.1 一般字元 由所有那些未顯式指定為元字元的列印和非列印字元組成。這包括所有的大寫和小寫字母字元,所有數字,所有標點符號以及一些符號。 3.2 非列印字元字元含義\cx匹配由x指明的控制字元。例如, \cM
Time of Update: 2017-01-19
序列化(Serializing) PHP不支援永久對象,在OOP中永久對象是可以在多個應用的引用中保持狀態和功能的對象,這意味著擁有將對象儲存到一個檔案或資料庫中的能力,而 且可以在以後裝入對象。這就是所謂的序列化機制。PHP 擁有序列化方法,它可以通過對象進行調用,序列化方法可以返回對象的字串表示。然而,序列化只儲存了對象的成員資料而不包話方法。 在 PHP4中,如果你將對象序列化到字串$s中,然後釋放對象,接著還原序列化對象 到$obj,你可以繼續使用對象的方法!我不建議這樣去做,因為(a)
Time of Update: 2017-01-19
許久以前寫過一篇也是關於高效能PHP圖片動態裁剪方案的文章,那文章使用的是nginx
Time of Update: 2017-01-19
先給大家說下PHP echo() 函數定義和用法echo() 函數輸出一個或多個字串。注釋:echo() 函數實際不是一個函數,所以您不必對它使用括弧。然而,如果您希望向 echo() 傳遞一個以上的參數,使用括弧將會產生解析錯誤。提示:echo() 函數比 print() 速度稍快。提示:echo() 函數也有簡寫文法。在 PHP 5.4.0 之前,該文法只適用於 short_open_tag 配置設定啟用的情況。文法echo(strings) 參數 描述
Time of Update: 2017-01-19
我花了一個下午的時間,自己用PHP指令碼寫了一個處理上傳檔案的指令碼代碼,沒有做更多的安全處理,希望對大家有用。 首先,在你的config.js檔案裡添加如下代碼: 複製代碼 代碼如下: CKEDITOR.editorConfig = function( config ) { config.filebrowserImageUploadUrl = './upload.php?type=img'; config.filebrowserFlashUploadUrl =
Time of Update: 2017-01-19
幾乎所有的cgi程式都有這樣的 bug,只是具體的表現方式不一樣罷了。 一、涉及到的危險函數〔include(),require()和include_once(),require_once()〕 include() && require()語句:包括並運行指定檔案。 這兩種結構除了在如何處理失敗之外完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果你想在遇到丟失檔案時停止處理頁面就用 require()。include()
Time of Update: 2017-01-19
大家可以參考下面的這篇文章http://www.jb51.net/article/6488.htmSQL:$SQL="delete from `doing` where id in ('1,2,3,4')"; 資料用逗號隔開。 表單: 複製代碼 代碼如下: <form action="?action=doing" method="post"> <input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value=
Time of Update: 2017-01-19
format 參數的可能值: a - NUL-padded string A - SPACE-padded string h - Hex string, low nibble first H - Hex string, high nibble first c - signed char C - unsigned char s - signed short (always 16 bit, machine byte order) S - unsigned short (always 16 bit,
Time of Update: 2017-01-19
複製代碼 代碼如下: $a = '212345678912000005'; $b = '212345678912000001'; var_dump($a == $b); 這段代碼的輸出是bool(true), 說明這樣判斷會得出結論是兩者相等. 類似的特性在in_array()函數第3個參數為false或者不設定的情況. 原因是首先判斷字串是否是數字, 然後轉換成long或者double(C語言資料類型)再判斷 - 使用zendi_smart_strcmp. 但是,
Time of Update: 2017-01-19
一個好的分頁演算法, 應該具有下面的優點: 當前頁碼應該盡量在正中間. 如果"首頁"和"尾頁"不可用(當前處於第一頁或最後一頁), 不要隱藏這兩組文字, 以免連結按鈕位置變動. 演算法簡單. 下面的演算法具有前面1和3兩個優點. 複製代碼 代碼如下: // $curr_index, 當前頁碼. // $link_count, 連結數量. // $page_count, 當前的資料的總頁數. // $start, 顯示時的起始頁碼. // $end, 顯示時的終止頁碼. $start = max(
Time of Update: 2017-01-19
寫了一個類用來測試目標函數的執行時間。以下是類的定義代碼:複製代碼 代碼如下:<?php/** * class EfficiencyTester * 效率測試器,測試函數的已耗用時間 * @version 1.0 2013.04.13 * @author Kross */class EfficiencyTester {
Time of Update: 2017-01-19
核心代碼function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[