做採集經常遇到的問題是內容排版問題,用了一些時間寫了個用正則替換html標籤和樣式的函數,共用下。複製代碼 代碼如下:/** * 格式化內容 * @param string $content 內容最好統一用utf-8編碼 * @return string * !本函數需要開啟tidy擴充 */function removeFormat($content) { $replaces = array ( "/<font.*?>/i" => '',
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。簡而論之,不管是xml還是json都是為了方便在用戶端與伺服器端互動資料的中轉站,特別是用於對象型資料,比如最常見的數組。下面將分別將數組從php傳送給javascript,以及將數組從javascript傳送給php樣本說明,例子比較簡單,明白概念即可。不管從php傳送給javascript,還是javascript傳送給php,json在傳送之前都會將對象扁平化即一維化為字串。PHP 向
使用php擷取時間今天明天昨天時間戳記2013-06-20 11:12<?phpecho "今天:".date("Y-m-d")."<br>"; echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>"; echo "明天:".date("Y-m-d",strtotime("+1 day")). "<br>"; echo "一周后:".date("Y-m-d",strtotime("+1
PHP代碼: 需要注意php擷取路徑用的是realpath 複製代碼 代碼如下:<?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $issuetime=date("Y-m-d H:i:s"); $sql="insert into test values(""
1.盡量靜態化:如果一個方法能被靜態,那就聲明它為靜態,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。其實靜態方法和非靜態方法的效率主要區別在記憶體:靜態方法在程式開始時產生記憶體,執行個體方法在程式運行中產生記憶體,所以靜態方法可以直接調用,執行個體方法要先成生執行個體,通過執行個體調用方法,靜態速度很快,但是多了會佔記憶體。任何語言都是對記憶體和磁碟的操作,至於是否物件導向,只是軟體層的問題,底層都是一樣的,只是實現方法不同。靜
在使用PHP過程中發現,自己編寫的php代碼因為都是原始碼方式放在伺服器上的所以很容易就被別人拿走隨便修改(變成自己開發的)使用了。為了保住自己的勞動成果,我一直尋找一種可以加密php代碼的軟體。最著名的就是Zend公司的Zendencoder了,但是不是開源軟體(要價很高,也沒有找到破解版)。既然收費的用不起,我們就用開源的。我找到了php_screw這個開源軟體,目前最新版本是1.5安裝環境系統:centos 5.3軟體:Apache 2.2.9PHP
Smarty中如何擷取數組的長度 前提假設:分配了一個數組array給Smarty,假設Smarty的分界符為'{'
我本機開發用的是winXP,但是上傳的伺服器是linux,每次上傳前總是要改一下設定檔,還有其他一些什麼的,現在通過判斷當前伺服器的類型來決定執行什麼樣的程式,那麼php如何判斷所處伺服器是什麼類型呢php有許多系統預定義變數,通過判斷他們可以簡單的判斷系統是 windows還是*unix其中相關的函數或者預定義變數如下複製代碼 代碼如下:php_uname();PHP_OSDIRECTORY_SEPARATORPHP_SHLIB_SUFFIXPATH_SEPARATOR具體程式:複製代碼
PHP最佳化對於PHP的最佳化主要是對php.ini中的相關主要參數進行合理調整和設定,以下我們就來看看php.ini中的一些對效能影響較大的參數應該如何設定。 # vi /etc/php.ini(1) PHP函數禁用找到:disable_functions
PHP中對於正則處理文本提供了兩種方式,一種是PCRE方式(PCRE庫是一個實現了與perl 5在文法和語義上略有差異(詳見下文)的Regex模式比對功能的函數集. 當前的實現對應於perl 5.005.);另一個是POSIX方式。PCRE 函數庫中的函數使用的模式文法非常類似perl. 運算式必須用分隔字元閉合, 比如一個正斜杠(/). 分隔字元可以使任意非字母數字, 除反斜線(\)和空位元組之外的非空白ascii字元. 如果分隔字元 在運算式中使用, 需要使用反斜線進行轉義. 自php 4.
通過把Content-Type設定為application/octet-stream,可以把動態產生的內容當作檔案來下載,相信這個大家都會。那麼用Content-Disposition設定下載的檔案名稱,這個也有不少人知道吧。基本上,下載程式都是這麼寫的:複製代碼 代碼如下:$filename = "document.txt";header('Content-Type: application/octet-stream');header('Content-Disposition:
在一個項目中遇到了一個奇怪的問題,耗費了我不少時間都沒有解決,最終調試發現是判斷的問題—-關於0和 ‘ ‘ (空單引號,為好看清我加了個空格)的判斷,我發現 0==”
有時候可變的變數名會給編程帶來很大的方便。也就是說變數名可以被動態命名和使用。通常變數通過下面這樣的語句來命名 :$a = 'hello';可變變數名指的是使用一個變數的值作為這個變數的名稱。在上面的例子中,通過使用兩個$符號,你可以把hello設定成一個變數的名稱,就像下面那樣。$$a = 'world'; 通過上面的兩個語句,有兩個變數被定義:變數$a,裝的內容是”hello” 以及變數$hello,裝的內容是 “world”。 於是,下面的語言:echo "$a ${$a}";
php檔案通常以文字格式設定存貯在伺服器端, 很容易被別人讀到原始碼, 為了對原始碼進行保護, 可以採用對原始碼進行加密的方式.要實現該功能需要兩部分:一是加密程式,實現對PHP檔案的加密. 另一個就是對加密過的PHP檔案進行解析, 以得到運行結果. 前者的實現比較簡單, 就是一程式而已. 後者的實現大部分都是通過php
/*******echo********/echo— 輸出一個或多個字串描述echo ( string arg1 [, string ...] )echo()實際上不是一個函數(它是一個語言結構),所以您不需要使用括弧。echo()的(不同於其他一些語言構造)並不像一個功能,所以它不能總是在函數中使用。此外,如果你想傳遞多個參數的echo(),參數必須不被括在括弧內。echo()是命令,不能傳回值。echo後面可以跟很多個參數,之間用分號隔開,如:echo $myvar1;echo
1,快速建立數組的函數range()比如range()函數可以快速建立從1到9的數字數組:複製代碼 代碼如下:<?php $numbers=range(1,9);echo $numbers[1];?>當然,使用range(9,1)則建立了9到1的數字數組。同時,range()還可以建立從a到z 的字元數組:複製代碼 代碼如下:<?php $numbers=range(a,z);foreach ($numbers as $mychrs) echo $mychrs." ";?
為什麼需要Debugger?很多PHP程式員調試使用echo、print_r()、var_dump()、printf()等,其實對 於有較豐富開發經驗的程式員來說這些也已經足夠了,他們往往可以在程式執行的過程中,通過輸出特定變數的值可以判斷程式執行是否正確,甚至效率高低也可以 看出來(當然可能還需要使用一些時間函數)。那麼我們為什麼還需要一個專門的偵錯工具來監控我們的程式運行呢?
首先讓我們看一個問題: 如下代碼的輸出,複製代碼 代碼如下:var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());輸出(在我的個人電腦上, 可能會因為系統,PHP版本,載入的擴充不同而不同):int(90440)int(90640)int(90472)注意到 90472-90440=32, 於是就有了各種的結論,
die()停止程式運行,輸出內容exit是停止程式運行,不輸出內容return是傳回值die是遇到錯誤才停止exit是直接停止,並且不運行後續代碼,exit()可以顯示內容。return就是純粹的傳回值了,但是也不會運行後續代碼exit(0):正常運行程式並退出程式;exit(1):非正常運行導致退出程式;return():返回函數,若在主函數中,則會退出函數並返回一值。詳細說: 1. return返回函數值,是關鍵字; exit 是一個函數。 2.
flush函數:重新整理輸出緩衝ob_clean函數:清空輸出緩衝ob_end_clean函數:清空緩衝區並且關閉進行中的輸出緩衝ob_end_flush函數:發送緩衝區資料並且關閉緩衝區ob_flush函數:發送緩衝區資料ob_get_clean函數:擷取緩衝區內容並且結束緩衝區ob_get_contents函數:擷取緩衝區資料ob_get_flush函數:重新整理緩衝區資料,返回資料並且關閉緩衝區ob_get_length函數:擷取緩衝區長度ob_get_level函數:擷取緩衝區等級ob_