Time of Update: 2017-01-19
雖然可以通過設定錯誤顯示方式來隱藏這個提示,但是這樣也有隱患,就是在伺服器的日誌中會記錄這些提示,導致記錄檔異常龐大。 首先,這個不是錯誤,是warning。所以如果伺服器不能改,每個變數使用前應當先定義。網上流行的解決方案有以下幾種: 方法1:伺服器配置修改。修改php.ini設定檔,error_reporting = E_ALL & ~E_NOTICE。 方法2:對變數進行初始化,規範書寫(比較煩瑣,因為有大量的變數)。但還沒有找到好定義方法,望大家指教。
Time of Update: 2017-01-19
php.ini 中預設的最長執行時間是 30 秒,這是由 php.ini 中的 max_execution_time 變數指定,倘若你有一個需要頗多時間才能完成的工作,例如要發送很多電子郵件給大量收件者,或者要進行繁重的資料分析工作,伺服器會在 30 秒後強行中止正在執行的程式,如何解決這個問題呢。 最簡單當然是修改 php.ini 中 max_execution_time 的數值,不過不是所有人都有權修改 php.ini,例如使用網頁寄存的開發人員,伺服器上的 php.ini
Time of Update: 2017-01-19
字串截取是一個非常常見的編程任務,而往往帶中文的字串截取會經常用到。雖然不難,但是自己寫函數實現又耗費時間,這裡介紹一個比較好用的字串截取函數,能夠勝任基本的需求了。 1. 截取GB2312中文字串 複製代碼 代碼如下: < ?php //截取中文字串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) {
Time of Update: 2017-01-19
1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", $msg); -----刪除<style></style>和中間的部分 $msg = preg_replace("/<[^>]+>/", "", $msg); -----是刪除<>和中間的內容 i (PCRE_CASELESS) 如果設定此修正符,模式中的字元將同時匹配大小寫字母。
Time of Update: 2017-01-19
結果碰到一個問題,setcookie設定了Cookie並沒有生效,在瀏覽器端也沒有看到。查了一下,原來是setcookie是通過HTTP請求響應的Header來完成的,需要在請求響應內容輸出之前執行(就像其他Header設定一樣)。 在php.ini中error_reporting = E_ALL的情況下,輸出內容之後再setcookie會彈出以下提示: 複製代碼 代碼如下: Warning: Cannot modify header information – headers already
Time of Update: 2017-01-19
這個方法同樣可以用於判斷是否有該分隔字元號。例如: 複製代碼 代碼如下: <?php if($_MODULE[tg1_tjly]){ $tg1_tjly = explode("|",$_MODULE[tg1_tjly]); if(count($tg1_tjly)>1){ //重點在這裡,統計數組大於1的時候則說明含有1個或以上的間隔符號“|”。 $tg1_tjly_tit = $tg1_tjly[0]; $tg1_tjly_con = $tg1_tjly[1]; }else{
Time of Update: 2017-01-19
複製代碼 代碼如下: /*函數array_walk():單一數組回呼函數---對數組中的每個成員應用使用者函數 * 1、文法:bool array_walk ( array &array, callback funcname [, mixed $userdata] ) * 2、描述:如果成功則返回 TRUE,失敗則返回 FALSE * 3、注意事項: * 3.1、$funcname是使用者自己 定義的回呼函數,接受2個參數,第一個參數為數組$array的值,第二個參數為 *
Time of Update: 2017-01-19
1、超級簡單的頁面緩衝 如果你的工程項目不是基於 CMS 系統或架構,打造一個簡單的緩衝系統將會非常實在。下面的代碼很簡單,但是對小網站而言能切切實實解決問題。 複製代碼 代碼如下: <?php // define the path and name of cached file $cachefile = 'cached-files/'.date('M-d-Y').'.php'; // define how long we want to keep the file in seconds.
Time of Update: 2017-01-19
複製代碼 代碼如下: <?php /** * @author Yuans * @copyright php.com * @package 函數的常用使用方法及特性. */ # 基礎函數編寫注意點. // 為了方便ide的管理及代碼提示功能,我們在所有函數命名時使用fun_開頭. function fun_cutstr($str,$str_width=0,$str_pad='...'){ // 每個函數都得考慮一些異常的情況, 比如函數引入不對, 為0,為false等. //
Time of Update: 2017-01-19
複製代碼 代碼如下: <?php /** * 冒泡排序 bubble sort * * 原理:多次迴圈進行比較,每次比較時將最大數移動到最上面。每次迴圈時,找出剩餘變數裡的最大值,然後減小查詢範圍。這樣經過多次迴圈以後,就完成了對這個數組的排序 */ function sort_bubble($list) { $len = count($list); if(empty($len)) return $list; for($i = 0;$i < $len; $i++) { for($j
Time of Update: 2017-01-19
複製代碼 代碼如下: /** * 擷取變數名 * * @param $string * @return $string * * $test = "helo"; * $test2 = "helo"; * getVarName($test2); */ function getVarName(&$src){ //儲存當前變數值 $save = $src; //儲存所有變數值 $allvar = $GLOBALS; //在函數中不要直拉遍曆$GLOBALS,會出現堆棧問題
Time of Update: 2017-01-19
今天看到幾個有關PHP的符號。一個是@,這個加在一個變數的前面,是為了抑制PHP解譯器報錯,也就是說即使出了錯也不會顯示出來。 還有一個更重要的符號PHP的範圍解析操作符(::) 在沒有聲明任何執行個體的情況下訪問類中的函數或者基類中的函數和變數很有用處。而 :: 運算子即用於此情況。 複製代碼 代碼如下: <?php class A { function example() { echo "I am the original function A::example().<br /&
Time of Update: 2017-01-19
函數 bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $...]]] ) 參數說明: 函數對多個數組或多維陣列進行排序 第一個參數是數組,隨後的每一個參數可能是數組,也可能是下面的排序次序標誌 SORT_ASC - 預設,按升序排列 SORT_DESC - 按降序排列 隨後可以指定排序的類型 SORT_REGULAR -
Time of Update: 2017-01-19
1.include_path的意義 當時候函數include(),require(),fopen_with_path()函數來尋找檔案時候.在不設定include_path的情況下,這些函數開啟檔案時候預設的是以web根目錄去尋找.當設定include_path以後,這些php函數就會先在指定的include_path目錄下面去搜尋尋找.
Time of Update: 2017-01-19
如果要求數組 $a 與數組 $b 的差集的個數,應該使用 count($a) - count(array_intersect($a, $b)),而不要用 count(array_diff($a, $b)); 前面要比後者快,在大數組中更為明顯。 1.array_intersect函數 array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) array_intersect()
Time of Update: 2017-01-19
複製代碼 代碼如下: <?php /** * 檔案上傳類 */ class uploadFile { public $max_size = '1000000';//設定上傳檔案大小 public $file_name = 'date';//重新命名方式代表以時間命名,其他則使用給予的名稱 public $allow_types;//允許上傳的副檔名,不同檔案類型用“|”隔開 public $errmsg = '';//錯誤資訊 public $uploaded =
Time of Update: 2017-01-19
複製代碼 代碼如下: //date:2011-08-05 class RunTime//頁面執行時間類 { private $starttime;//頁面開始執行時間 private $stoptime;//頁面結束執行時間 private $spendtime;//頁面執行花費時間 function getmicrotime()//擷取返回當前微秒數的浮點數 { list($usec,$sec)=explode(" ",microtime()); return ((float)$usec +
Time of Update: 2017-01-19
原理如下,假如: 加密 明文:1010 1001 密匙:1110 0011 密文:0100 1010 得出密文0100 1010,解密之需和密匙異或下就可以了 解密 密文:0100 1010 密匙:1110 0011 明文:1010 1001 並沒有什麼高深的演算法,密匙重要性很高,所以,關鍵在於怎麼產生密匙。 那我們一起看下康盛的authcode怎麼做的吧 複製代碼 代碼如下: // 參數解釋 // $string: 明文 或 密文 //
Time of Update: 2017-01-19
當我們需要將一個數組根據某個字元或字串進行分割成數組的時候,explode用的很happy,但是你知道~explode是怎麼工作的麼~~ 首先可以肯定的是,explode也是會分配空間的,毫無疑問。 複製代碼 代碼如下: //檔案1:ext/standard/string.c //先來看下explode的原始碼 PHP_FUNCTION(explode) { char *str, *delim; int str_len = 0, delim_len = 0; long limit = LONG_
Time of Update: 2017-01-19
複製代碼 代碼如下: //取得指定檔案夾的目錄名稱 function get_dir_name($dir_path,$file) { $dirpath = $dir_path; $dir = scandir($dirpath); foreach ($dir as $key=>$value) { if (is_dir($dirpath.'/'.$value) && $value != '.' && $value != '..') { //echo $dirpath.'/'.$value.'/