史上最全的PHP常用函數大全,不看看你就out了(還會不斷更新哦!)


 紀錄了PHP的一些常用函數和函數代碼!不要錯過了哦。

PHP的一些常用函數
usleep() 函數延遲代碼執行若干微秒。
unpack() 函數從二進制字符串對數據進行解包。
uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID。
time_sleep_until() 函數延遲代碼執行直到指定的時間。
time_nanosleep() 函數延遲代碼執行若干秒和納秒。
sleep() 函數延遲代碼執行若干秒。
show_source() 函數對文件進行語法高亮顯示。
strip_whitespace() 函數返回已刪除 PHP 注釋以及空白字符的源代碼文件。
pack() 函數把數據裝入一個二進制字符串。
ignore_user_abort() 函數設置與客戶機斷開是否會終止腳本的執行。
highlight_string() 函數對字符串進行語法高亮顯示。
highlight_file() 函數對文件進行語法高亮顯示。
get_browser() 函數返回用戶瀏覽器的性能。
exit() 函數輸出一條消息,並退出當前腳本。
eval() 函數把字符串按照 PHP 代碼來計算。
die() 函數輸出一條消息,並退出當前腳本。
defined() 函數檢查某常量是否存在。
define() 函數定義一個常量。
constant() 函數返回常量的值。
connection_status() 函數返回當前的連接狀態。
connection_aborted() 函數檢查是否斷開客戶機。
zip_read() 函數讀取打開的 zip 檔案中的下一個文件。
zip_open() 函數打開 ZIP 文件以供讀取。
zip_entry_read() 函數從打開的 zip 檔案項目中獲取內容。
zip_entry_open() 函數打開一個 ZIP 檔案項目以供讀取。
zip_entry_name() 函數返回 zip 檔案項目的名稱。
zip_entry_filesize() 函數返回 zip 檔案項目的原始大小(在壓縮之前)。
zip_entry_compressionmethod() 函數返回 zip 檔案項目的壓縮方法。
zip_entry_compressedsize() 函數返回 zip 檔案項目的壓縮文件尺寸。
zip_entry_close() 函數關閉由 zip_entry_open() 函數打開的 zip 檔案文件。
zip_close() 函數關閉由 zip_open() 函數打開的 zip 檔案文件。
xml_set_unparsed_entity_decl_handler() 函數規定在遇到無法解析的實體名稱(NDATA)聲明時被調用的函數。
xml_set_processing_instruction_handler() 函數規定當解析器在 XML 文檔中找到處理指令時所調用的函數。
xml_set_object() 函數允許在對象中使用 XML 解析器。
xml_set_notation_decl_handler() 函數規定當解析器在 XML 文檔中找到符號聲明時被調用的函數。
xml_set_external_entity_ref_handler() 函數規定當解析器在 XML 文檔中找到外部實體時被調用的函數。
xml_set_element_handler() 函數建立起始和終止元素處理器。
xml_set_default_handler() 函數為 XML 解析器建立默認的數據處理器。
xml_set_character_data_handler() 函數建立字符數據處理器。
xml_parser_set_option() 函數為 XML 解析器進行選項設置。
xml_parser_get_option() 函數從 XML 解析器獲取選項設置信息。
xml_parser_free() 函數釋放 XML 解析器。
xml_parser_create() 函數創建 XML 解析器。
xml_parser_create_ns() 函數創建帶有命名空間支持的 XML 解析器。
xml_parse_into_struct() 函數把 XML 數據解析到數組中。
xml_parse() 函數解析 XML 文檔。
xml_get_error_code() 函數獲取 XML 解析器錯誤代碼。
xml_get_current_line_number() 函數獲取 XML 解析器的當前行號。
xml_get_current_column_number() 函數獲取 XML 解析器的當前列號。
xml_get_current_byte_index() 函數獲取 XML 解析器的當前字節索引。
xml_error_string() 函數獲取 XML 解析器的錯誤描述。
utf8_encode() 函數把 ISO-8859-1 字符串編碼為 UTF-8。
utf8_decode() 函數把 UTF-8 字符串解碼為 ISO-8859-1。
wordwrap() 函數按照指定長度對字符串進行折行處理。
vsprintf() 函數把格式化字符串寫入變量中。
vprintf() 函數輸出格式化的字符串。
vfprintf() 函數把格式化的字符串寫到指定的輸出流。
ucwords() 函數把字符串中每個單詞的首字符轉換為大寫。
ucfirst() 函數把字符串中的首字符轉換為大寫。
trim() 函數從字符串的兩端刪除空白字符和其他預定義字符。
substr_replace() 函數把字符串的一部分替換為另一個字符串。
substr_count() 函數計算子串在字符串中出現的次數。
substr_compare() 函數從指定的開始長度比較兩個字符串。
substr() 函數返回字符串的一部分。
strtr() 函數轉換字符串中特定的字符。
strtoupper() 函數把字符串轉換為大寫。
strtolower() 函數把字符串轉換為小寫。
strtok() 函數把字符串分割為更小的字符串。
strstr() 函數搜索一個字符串在另一個字符串中的第一次出現。
strspn() 函數返回在字符串中包含的特定字符的數目。
strrpos() 函數查找字符串在另一個字符串中最后一次出現的位置。
strripos() 函數查找字符串在另一個字符串中最后一次出現的位置。
strrev() 函數反轉字符串。
strrchr() 函數查找字符串在另一個字符串中最后一次出現的位置,並返回從該位置到字符串結尾的所有字符。
strpos() 函數返回字符串在另一個字符串中第一次出現的位置。
strpbrk() 函數在字符串中搜索指定字符中的任意一個。
strncmp() 函數比較兩個字符串。
strncasecmp() 函數比較兩個字符串。
strnatcmp() 函數使用一種“自然”算法來比較兩個字符串。
strnatcasecmp() 函數使用一種“自然”算法來比較兩個字符串。
strlen() 函數返回字符串的長度。
stristr() 函數查找字符串在另一個字符串中第一次出現的位置。
stripos() 函數返回字符串在另一個字符串中第一次出現的位置。
stripslashes() 函數刪除由 addslashes() 函數添加的反斜杠。
stripcslashes() 函數刪除由 addcslashes() 函數添加的反斜杠。
strip_tags() 函數剝去 HTML、XML 以及 PHP 的標簽。
strcspn() 函數返回在找到任何指定的字符之前,在字符串查找的字符數。
strcoll() 函數比較兩個字符串。
strcmp() 函數比較兩個字符串。
strchr() 函數搜索一個字符串在另一個字符串中的第一次出現。
strcasecmp() 函數比較兩個字符串。
str_word_count() 函數計算字符串中的單詞數。
str_split() 函數把字符串分割到數組中。
str_shuffle() 函數隨機地打亂字符串中的所有字符。
str_rot13() 函數對字符串執行 ROT13 編碼。
str_replace() 函數使用一個字符串替換字符串中的另一些字符。
str_repeat() 函數把字符串重復指定的次數。
str_pad() 函數把字符串填充為指定的長度。
str_ireplace() 函數使用一個字符串替換字符串中的另一些字符。
sscanf() 函數根據指定的格式解析來自一個字符串的輸入。
sprintf() 函數把格式化的字符串寫寫入一個變量中。
soundex() 函數計算字符串的 soundex 鍵。
similar_text() 函數計算兩個字符串的匹配字符的數目。
sha1_file() 函數計算文件的 SHA-1 散列。
sha1() 函數計算字符串的 SHA-1 散列。
setlocale() 函數設置地區信息(地域信息)。
rtrim() P rtrim() 函數 

PHP String 函數
quotemeta() 函數在字符串中某些預定義的字符前添加反斜杠。
quoted_printable_decode() 函數對經過 quoted-printable 編碼后的字符串進行解碼,返回 8 位的字符串。
printf() 函數輸出格式化的字符串。
print() 函數輸出一個或多個字符串。
parse_str() 函數把查詢字符串解析到變量中。
ord() 函數返回字符串第一個字符的 ASCII 值。
number_format() 函數通過千位分組來格式化數字。
nl2br() 函數在字符串中的每個新行 (\n) 之前插入 HTML 換行符 (<br />)。
nl_langinfo() 函數返回指定的本地信息。
money_format() 函數把字符串格式化為貨幣字符串。
metaphone() 函數計算字符串的 metaphone 鍵。
md5_file() 函數計算文件的 MD5 散列。
md5() 函數計算字符串的 MD5 散列。
ltrim() 函數從字符串左側刪除空格或其他預定義字符。
localeconv() 函數返回包含本地數字及貨幣信息格式的數組。
levenshtein() 函數返回兩個字符串之間的 Levenshtein 距離。
join() 函數把數組元素組合為一個字符串。
implode() 函數把數組元素組合為一個字符串。
htmlspecialchars() 函數把一些預定義的字符轉換為 HTML 實體。
html_entity_decode() chars_decode() 函數
htmlentities() 函數把字符轉換為 HTML 實體。
html_entity_decode() 函數把 HTML 實體轉換為字符。
hebrevc() 函數把希伯來文本從右至左的流轉換為左至右的流。它也會把新行 (\n) 轉換為 <br />。
hebrev() 函數把希伯來文本從右至左的流轉換為左至右的流。
get_html_translation_table() 函數返回被 htmlentities() 和 htmlspecialchars() 函數使用的翻譯表。
fprintf() 函數把格式化的字符串寫到指定的輸出流(例如:文件或數據庫)。
explode() 函數把字符串分割為數組。
echo() 函數輸出一個或多個字符串。
crypt() 函數返回使用 DES、Blowfish 或 MD5 加密的字符串。
crc32() 函數計算一個字符串的 crc32 多項式。
count_chars() 函數返回字符串所用字符的信息。
convert_uuencode() 函數使用 uuencode 算法對字符串進行編碼。
convert_uudecode() 函數對 uuencode 編碼的字符串進行解碼。
convert_cyr_string() 函數把字符由一種 Cyrillic 字符轉換成另一種。
chunk_split() 函數把字符串分割為一連串更小的部分。
chr() 函數從指定的 ASCII 值返回字符。
chop() 函數從字符串的末端開始刪除空白字符或其他預定義字符。
bin2hex() 函數把 ASCII 字符的字符串轉換為十六進制值。
addslashes() 函數在指定的預定義字符前添加反斜杠。
addcslashes() 函數在指定的字符前添加反斜杠。
xpath() 函數運行對 XML 文檔的 XPath 查詢。
simplexml_load_string() 函數把 XML 字符串載入對象中。
simplexml_load_file() 函數把 XML 文檔載入對象中。
simplexml_import_dom() 函數把 DOM 節點轉換為 SimpleXMLElement 對象。
registerXPathNamespace() 函數為下一次 XPath 查詢創建命名空間語境。
getNamespace() 函數獲取在 XML 文檔中使用的命名空間。
getName() 函數從 SimpleXMLElement 對象獲取 XML 元素的名稱。
getDocNamespaces() 函數從 SimpleXMLElement 對象返回在 XML 文檔中聲明的命名空間。
children() 函數獲取指定節點的子節點。
attributes() 函數獲取 SimpleXML 元素的屬性。
asXML() 函數以字符串的形式從 SimpleXMLElement 對象返回 XML 文檔。
addChild() 函數向指定的 XML 節點添加一個子節點。
addAttribute() 函數給 SimpleXML 元素添加一個屬性。
__construct() 函數創建一個新的 SimpleXMLElement 對象。
mysql_unbuffered_query() 函數向 MySQL 發送一條 SQL 查詢(不獲取 / 緩存結果)。
mysql_thread_id() 函數返回當前線程的 ID。
mysql_stat() 函數返回 MySQL 服務器的當前系統狀態。
mysql_select_db() 函數設置活動的 MySQL 數據庫。
mysql_result() 函數返回結果集中一個字段的值。
mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符。
mysql_query() 函數執行一條 MySQL 查詢。
mysql_ping() 函數 Ping 一個服務器連接,如果沒有連接則重新連接。
mysql_pconnect() 函數打開一個到 MySQL 服務器的持久連接。
mysql_num_rows() 函數返回結果集中行的數目。
mysql_num_fields() 函數返回結果集中字段的數。
mysql_list_processes() 函數列出 MySQL 進程。
mysql_list_dbs() 函數列出 MySQL 服務器中所有的數據庫。
mysql_insert_id() 函數返回上一步 INSERT 操作產生的 ID。
mysql_info() 函數返回最近一條查詢的信息。
mysql_get_server_info() 函數返回 MySQL 服務器的信息。
mysql_get_proto_info() 函數返回 MySQL 協議的信息。
mysql_get_host_info() 函數返回 MySQL 主機的信息。
mysql_get_client_info() 函數返回 MySQL 客戶端信息。
mysql_free_result() 函數釋放結果內存。
mysql_field_type() 函數返回結果集中指定字段的類型。
mysql_field_table() 函數返回指定字段所在的表名。
mysql_field_seek() 函數將結果集中的指針設定為指定的字段偏移量。
mysql_field_name() 函數取得結果中指定字段的字段名。
mysql_field_len() 函數返回指定字段的長度。
mysql_field_flags() 函數從結果中取得和指定字段關聯的標志。
mysql_fetch_row() 函數從結果集中取得一行作為數字數組。
mysql_fetch_object() 函數從結果集(記錄集)中取得一行作為對象。
mysql_fetch_lengths() 函數取得一行中每個字段的內容的長度。
mysql_fetch_field() 函數從結果集中取得列信息並作為對象返回。
mysql_fetch_assoc() 函數從結果集中取得一行作為關聯數組。
mysql_fetch_array() 函數從結果集中取得一行作為關聯數組,或數字數組,或二者兼有
mysql_error() 函數返回上一個 MySQL 操作產生的文本錯誤信息。
mysql_errno() 函數返回上一個 MySQL 操作中的錯誤信息的數字編碼。
mysql_db_name() 函數取得 mysql_list_dbs() 調用所返回的數據庫名。
mysql_data_seek() 函數移動內部結果的指針。
mysql_connect() 函數打開非持久的 MySQL 連接。
mysql_close() 函數關閉非持久的 MySQL 連接。
mysql_client_encoding() 函數返回當前連接的字符集的名稱。
mysql_affected_rows() 函數返回前一次 MySQL 操作所影響的記錄行數。
tanh() 函數返回雙曲正切。
tan() 函數返回正切。
srand() 函數播下隨機數發生器種子。
sqrt() 函數返回一個數的平方根。
sinh() 函數返回一個數的雙曲正弦。
sin() 函數返回一個數的正弦。
round() 函數對浮點數進行四舍五入。
rand() 函數返回隨機整數。
rad2deg() 函數把弧度數轉換為角度數。
pow() 函數返回 x 的 y 次方。
pi() 函數返回圓周率的值。
octdec() 函數把八進制轉換為十進制。
mt_srand() 播種 Mersenne Twister 隨機數生成器。
mt_rand() 使用 Mersenne Twister 算法返回隨機整數。
mt_getrandmax() 顯示隨機數的最大可能值。
min() 返回最小值。
max() 返回最大值。
log1p() 以返回 log(1 + x),甚至當 x 的值接近零也能計算出准確結果。
log10() 以 10 為底的對數。
log() 返回自然對數。
lcg_value() 組合線性同余發生器。
is_nan() 判斷是否為合法數值。
is_infinite() 判斷是否為無限值。
is_finite() 函數判斷是否為有限值。
hypot() 函數計算一直角三角形的斜邊長度。
hexdec() 函數把十六進制轉換為十進制。
fmod() 函數顯示隨機數最大的可能值。
fmod() 函數返回除法的浮點數余數。
floor() 函數向下舍入為最接近的整數。
expm1() 函數返回 exp(x) - 1,甚至當 number 的值接近零也能計算出准確結果。
exp() 函數計算 e 的指數。
deg2rad() 函數將角度轉換為弧度。
decoct() 函數把十進制轉換為八進制。
dechex() 函數把十進制轉換為十六進制。
decbin() 函數把十進制轉換為二進制。
cosh() 函數返回一個數的雙曲余弦。
cos() 函數返回一個數的余弦。
ceil() 函數向上舍入為最接近的整數。
bindec() 函數把二進制轉換為十進制。
base_convert() 函數在任意進制之間轉換數字。
atanh() 函數返回一個角度的反雙曲正切。
atan() 和 atan2() 和 atan2() 函數

PHP Math 函數
atan() 和 atan2() 和 atan2() 函數
asinh() 函數返回一個數的反雙曲正弦。
asin() 函數返回不同數值的反正弦,返回的結果是介於 -PI/2 與 PI/2 之間的弧度值。
acosh() 函數返回一個數的反雙曲余弦。
acos() 函數返回一個數的反余弦。
abs() 函數返回一個數的絕對值。
mail() 函數允許您從腳本中直接發送電子郵件。
libxml_use_internal_errors() 函數禁用標准的 libxml 錯誤,並啟用用戶錯誤處理。
libxml_get_last_error() 函數從 libxml 錯誤緩沖中獲取最后一個錯誤。
libxml_get_errors() 函數從 libxml 錯誤緩沖中獲取錯誤。
libxml_clear_errors() 函數清空 libxml 錯誤緩沖。
setrawcookie() 函數不對 cookie 值進行 URL 編碼,發送一個 HTTP cookie。
setcookie() 函數向客戶端發送一個 HTTP cookie。
headers_sent() 函數檢查 HTTP 報頭是否發送/已發送到何處。
headers_list() 函數返回已發送的(或待發送的)響應頭部的一個列表。
header() 函數向客戶端發送原始的 HTTP 報頭。
ftp_systype() 函數返回遠程 FTP 服務器的系統類型標識符。
ftp_ssl_connect() 函數打開一個安全的 SSL-FTP 連接。
ftp_size() 函數返回指定文件的大小。
ftp_site() 函數向服務器發送 SITE 命令。
ftp_set_option() 函數設置各種 FTP 運行時選項。
ftp_rmdir() 函數刪除一個目錄。
ftp_rename() 函數更改 FTP 服務器上的文件或目錄名。
ftp_rawlist() 函數返回指定目錄中文件的詳細列表。
ftp_raw() 函數向 FTP 服務器發送一個 raw 命令。
ftp_quit() 函數關閉 FTP 連接。
ftp_pwd() 函數返回當前目錄名。
ftp_put() 函數把文件上傳到服務器。
ftp_pasv() 函數把被動模式設置為打開或關閉。
ftp_nlist() 函數返回指定目錄的文件列表。
ftp_nb_put() 函數把文件上傳到服務器 (non-blocking)。
ftp_nb_get() 函數從 FTP 服務器上獲取文件並寫入本地文件 (non-blocking)。
ftp_nb_fput() 函數上傳一個已打開的文件,並在 FTP 服務器上把它保存為文件 (non-blocking)。
ftp_nb_fget() 函數從 FTP 服務器上下載一個文件並保存到本地已經打開的一個文件中 (non-blocking)。
ftp_nb_continue() 函數連續獲取 / 發送文件。
ftp_mkdir() 函數在 FTP 服務器上建立新目錄。
ftp_mdtm() 函數返回指定文件的最后修改時間。
ftp_login() 函數登錄 FTP 服務器。
ftp_get() 函數從 FTP 服務器上下載一個文件。
ftp_get_option() 函數返回當前 FTP 連接的各種不同的選項設置。
ftp_fput() 函數上傳一個已經打開的文件到 FTP 服務器。
ftp_fget() 函數從 FTP 服務器上下載一個文件並保存到本地一個已經打開的文件中。
ftp_exec() 函數請求在 FTP 服務器上執行一個程序或命令。
ftp_delete() 函數刪除 FTP 服務器上的一個文件。
ftp_connect() 函數建立一個新的 FTP 連接。
ftp_close() 函數關閉 FTP 連接。
ftp_chmod() 函數設置 FTP 服務器上指定文件的權限。
ftp_chdir() 函數改變 FTP 服務器上的當前目錄。
ftp_cdup() 函數把當前目錄改變為 FTP 服務器上的父目錄。
ftp_alloc() 函數為要上傳到 FTP 服務器的文件分配空間。
filter_var() 函數通過指定的過濾器過濾變量。
filter_var_array() 函數獲取多項變量,並進行過濾。
filter_list() 函數返回包含所有得到支持的過濾器的一個數組。
filter_input_array() 函數從腳本外部獲取多項輸入,並進行過濾。
filter_input() 函數從腳本外部獲取輸入,並進行過濾。
filter_id() 函數返回指定過濾器的 ID 號。
filter_has_var() 函數檢查是否存在指定輸入類型的變量。
unlink() 函數刪除文件。
umask() 函數改變當前的 umask。
touch() 函數設置指定文件的訪問和修改時間。
tmpfile() 函數以讀寫(w+)模式建立一個具有唯一文件名的臨時文件。
tempnam() 函數創建一個具有唯一文件名的臨時文件。
symlink() 函數創建符號連接。
stat() 函數返回關於文件的信息。
set_file_buffer() 函數設置打開文件的緩沖大小。
rmdir() 函數刪除空的目錄。
rewind() 函數將文件指針的位置倒回文件的開頭。
rename() 函數重命名文件或目錄。
realpath() 函數返回絕對路徑。
readlink() 函數返回符號連接指向的目標。
readfile() 函數輸出一個文件。
popen() 函數打開進程文件指針。
pclose() 函數關閉由 popen() 打開的管道。
pathinfo() 函數以數組的形式返回文件路徑的信息。
parse_ini_file() 函數解析一個配置文件,並以數組的形式返回其中的設置。
move_uploaded_file() 函數將上傳的文件移動到新位置。
mkdir() 函數創建目錄。
lstat() 函數返回關於文件或符號連接的信息。
linkinfo() 函數返回連接的信息。
link() 函數建立一個硬連接。
is_writeable() 函數判斷指定的文件是否可寫。
is_writable() 函數判斷指定的文件是否可寫。
is_uploaded_file() 函數判斷指定的文件是否是通過 HTTP POST 上傳的。
is_readable() 函數判斷指定文件名是否可讀。
is_link() 函數判斷指定文件名是否為一個符號連接。
is_file() 函數檢查指定的文件名是否是正常的文件。
is_executable() 函數檢查指定的文件是否可執行。
is_dir() 函數檢查指定的文件是否是目錄。
glob() 函數返回匹配指定模式的文件名或目錄。
fwrite() 函數寫入文件(可安全用於二進制文件)。
ftruncate() 函數把文件截斷到指定的長度。
ftell() 函數在打開文件中的當前位置。
fstat() 函數返回關於打開文件的信息。
fseek() 函數在打開的文件中定位。
fscanf() 函數根據指定的格式對來自打開的文件的輸入進行解析。
fread() 函數讀取文件(可安全用於二進制文件)。
fputs() 函數寫入文件(可安全用於二進制文件)。
fputcsv() 函數將行格式化為 CSV 並寫入一個打開的文件。
fpassthru() 函數輸出文件指針處的所有剩余數據。
fopen() 函數打開文件或者 URL。
fnmatch() 函數根據指定的模式來匹配文件名或字符串。
flock() 函數鎖定或釋放文件。
filetype() 函數返回指定文件或目錄的類型。
filesize() 函數返回指定文件的大小。
fileperms() 函數返回文件或目錄的權限。
fileowner() 函數返回文件的所有者。
filemtime() 函數返回文件內容上次的修改時間。
fileinode() 函數返回文件的 inode 編號。
filegroup() 函數返回指定文件的組 ID。
filectime() 函數返回指定文件的上次 inode 修改時間。
fileatime() 函數返回指定文件的上次訪問時間。
file_put_contents() 函數把一個字符串寫入文件中。
file_get_contents() 函數把整個文件讀入一個字符串中。
file_exists() 函數檢查文件或目錄是否存在。
file() 函數把整個文件讀入一個數組中。
fgetss() 函數從打開的文件中讀取一行並過濾掉 HTML 和 PHP 標記。
fgets() 函數從文件指針中讀取一行。
fgetcsv() 函數從文件指針中讀入一行並解析 CSV 字段。
fgetc() 函數從文件指針中讀取一個字符。
fflush() 函數將緩沖內容輸出到文件。
feof() 函數檢測是否已到達文件末尾 (eof)。
fclose() 函數關閉一個打開文件。
diskfreespace() 函數返回目錄中的可用空間。該函數是 disk_free_space() 函數的別名。
disk_total_space() 函數返回指定目錄的磁盤總大小。
disk_free_space() 函數返回目錄中的可用空間
dirname() 函數返回路徑中的目錄部分。
clearstatcache() 函數拷貝文件。
clearstatcache() 函數清除文件狀態緩存。
chown() 函數改變指定文件的所有者。
chmod() 函數改變文件模式。
chgrp() 函數改變文件所屬的組。
basename() 函數返回路徑中的文件名部分。
set_exception_handler() handler() 函數

PHP Error 和 Logging 函數
set_exception_handler() 函數設置用戶自定義的異常處理函數。
set_error_handler() 函數設置用戶自定義的錯誤處理函數。
restore_exception_handler() 函數恢復之前的異常處理程序,該程序是由 set_exception_handler() 函數改變的。
restore_error_handler() 函數恢復之前的錯誤處理程序,該程序是由 set_error_handler() 函數改變的。
error_reporting() 設置 PHP 的報錯級別並返回當前級別。
error_log() 函數向服務器錯誤記錄、文件或遠程目標發送一個錯誤。
error_get_last() 函數獲取最后發生的錯誤。
debug_print_backtrace() 函數輸出 backtrace。
debug_backtrace() cktrace() 函數
scandir() 函數返回一個數組,其中包含指定路徑中的文件和目錄。
rewinddir() 函數重置由 opendir() 打開的目錄句柄。
readdir() 函數返回由 opendir() 打開的目錄句柄中的條目。
opendir() 函數打開一個目錄句柄,可由 closedir(),readdir() 和 rewinddir() 使用。
getcwd() 函數返回當前目錄。
closedir() 函數關閉由 opendir() 函數打開的目錄句柄。
dir() 函數打開一個目錄句柄,並返回一個對象。這個對象包含三個方法:read() , rewind() 以及 close()。
chroot() 函數把當前進程的根目錄改變為指定的目錄。
chdir() 函數把當前的目錄改變為指定的目錄。
time() 函數返回當前時間的 Unix 時間戳。
strtotime() 函數將任何英文文本的日期時間描述解析為 Unix 時間戳。
strptime() 函數解析由 strftime() 生成的日期/時間。
strftime() 函數根據區域設置格式化本地時間/日期。
mktime() 函數返回一個日期的 Unix 時間戳。
microtime() 函數返回當前 Unix 時間戳和微秒數。
localtime() 函數返回本地時間(一個數組)。
idate() 函數將本地時間/日期格式化為整數。
gmstrftime() 函數根據本地區域設置格式化 GMT/UTC 時間/日期。
gmmktime() 函數取得 GMT 日期的 UNIX 時間戳。
gmdate() 函數格式化 GMT/UTC 日期/時間。
gettimeofday() 函數返回一個包含當前時間信息的數組。
getdate() 函數取得日期/時間信息。
date() 函數格式化一個本地時間/日期。
date_sunset() 函數返回指定的日期與地點的日落時間。
date_sunrise() 函數返回指定的日期與地點的日出時間。
date_default_timezone_set() 函數設置用在腳本中所有日期/時間函數的默認時區。
date_default_timezone_get() 函數返回腳本中所有日期時間函數所使用的默認時區。
checkdate() 函數驗證一個格里高里日期。
UnixToJD() 函數把 Unix 時間戳轉換為儒略日計數。
JulianToJD() 函數把儒略歷轉換為儒略日計數。
JewishToJD() 函數把猶太歷法轉換為儒略日計數。
JDToUnix() 函數把儒略日計數轉換為 Unix 時間戳。
JDToGregorian() lian() 函數

PHP Array 函數
JDToGregorian() wish() 函數
JDToGregorian() 函數把儒略日計數轉換為格利高里歷法。
JDToFrench() 函數把儒略日計數轉換為法國共和國歷法。
JDMonthName() 函數返回指定歷法的月份字符串。
JDDayOfWeek() 函數返回日期在周幾。
GregorianToJD() 函數將格利高里歷法轉換成為儒略日計數。
FrenchToJD() 函數將法國共和歷法轉換成為儒略日計數。
easter_days() 函數返回指定年份的復活節與 3 月 21 日之間的天數。
easter_date() 函數返回指定年份的復活節午夜的 Unix 時間戳。
cal_to_jd() 函數把指定的日期轉換為儒略日計數。
cal_info() 函數返回一個數組,其中包含了關於給定歷法的信息。
cal_from_jd() 函數把儒略日計數轉換為指定歷法的日期。
cal_days_in_month() 函數針對指定的年份和日歷,返回一個月中的天數。
usort() 函數使用用戶自定義的函數對數組排序。
uksort() 函數使用用戶自定義的比較函數按照鍵名對數組排序,並保持索引關系。
uasort() 函數使用用戶自定義的比較函數對數組排序,並保持索引關聯(不為元素分配新的鍵)。
sort() 函數按升序對給定數組的值排序。
sizeof() 函數計算數組中的單元數目或對象中的屬性個數。
shuffle() 函數把數組中的元素按隨機順序重新排列。
rsort() 函數對數組的元素按照鍵值進行逆向排序。與 arsort() 的功能基本相同。
reset() 函數把數組的內部指針指向第一個元素,並返回這個元素的值。
range() 函數創建並返回一個包含指定范圍的元素的數組。
prev() HP prev() 函數

PHP Array 函數
pos() 函數是 current() 函數 的別名。它可返回數組中當前元素的值。
next() 函數把指向當前元素的指針移動到下一個元素的位置,並返回當前元素的值。
natsort() 函數用自然順序算法對給定數組中的元素排序。
natcasesort() 函數用不區分大小寫的自然順序算法對給定數組中的元素排序。
list() 函數用數組中的元素為一組變量賦值。
ksort() 函數按照鍵名對數組排序,為數組值保留原來的鍵。
krsort() 函數將數組按照鍵逆向排序,為數組值保留原來的鍵。
key() 函數返回數組內部指針當前指向元素的鍵名。
in_array() 函數在數組中搜索給定的值。
extract() extract() 函數
end() 函數將數組內部指針指向最后一個元素,並返回該元素的值(如果成功)。
each() 函數生成一個由數組當前內部指針所指向的元素的鍵名和鍵值組成的數組,並把內部指針向前移動。
current() 函數返回數組中的當前元素(單元)。
count() 函數計算數組中的單元數目或對象中的屬性個數。
compact() 函數創建一個由參數所帶變量組成的數組。如果參數中存在數組,該數組中變量的值也會被獲取。
asort() 函數對數組進行排序並保持索引關系。主要用於對那些單元順序很重要的結合數組進行排序。
arsort() 函數對數組進行逆向排序並保持索引關系。主要用於對那些單元順序很重要的結合數組進行排序。
array_walk_recursive() cursive() 函數
array_walk() 函數對數組中的每個元素應用回調函數。如果成功則返回 TRUE,否則返回 FALSE。
array_values() 函數返回一個包含給定數組中所有鍵值的數組,但不保留鍵名。
array_unshift() 函數在數組開頭插入一個或多個元素。
array_unique() 函數移除數組中的重復的值,並返回結果數組。
array_uintersect_assoc() 函數帶索引檢查計算數組的交集,用回調函數比較數據。
array_uintersect() 函數計算數組的交集,用回調函數比較數據。
array_udiff_uassoc() 函數返回 array1 數組中存在但其它數組中都不存在的部分。返回的數組中鍵名保持不變。
array_udiff_assoc() 函數返回 array1 中存在但其它數組中都不存在的部分。
array_udiff() 函數返回一個數組,該數組包括了所有在被比較數組中,但是不在任何其它參數數組中的值,鍵名保留不變。
array_sum() 函數返回數組中所有值的總和。
array_splice() 函數與 array_slice() 函數類似,選擇數組中的一系列元素,但不返回,而是刪除它們並用其它值代替。
array_slice() 函數在數組中根據條件取出一段值,並返回。
array_shift() 函數刪除數組中的第一個元素,並返回被刪除元素的值。
array_search() 函數與 in_array() 一樣,在數組中查找一個鍵值。如果找到了該值,匹配元素的鍵名會被返回。如果沒找到,則返回 false。
array_reverse() 函數將原數組中的元素順序翻轉,創建新的數組並返回。如果第二個參數指定為 true,則元素的鍵名保持不變,否則鍵名將丟失。
array_reduce() 函數用回調函數迭代地將數組簡化為單一的值。如果指定第三個參數,則該參數將被當成是數組中的第一個值來處理,或者如果數組為空的話就作為最終返回值。
array_rand() 函數從數組中隨機選出一個或多個元素,並返回。
array_push() 函數向第一個參數的數組尾部添加一個或多個元素(入棧),然后返回新數組的長度。
array_product() 函數計算並返回數組中所有值的乘積。
array_pop() 函數刪除數組中的最后一個元素。
array_pad() 函數向一個數組插入帶有指定值的指定數量的元素。
array_multisort() 函數對多個數組或多維數組進行排序。
array_merge_recursive() 函數與 array_merge() 函數 一樣,將一個或多個數組的元素的合並起來,一個數組中的值附加在前一個數組的后面。並返回作為結果的數組。
array_merge() 函數把兩個或多個數組合並為一個數組。
array_map() 函數返回用戶自定義函數作用后的數組。回調函數接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。
array_keys() 函數返回包含數組中所有鍵名的一個新數組。
array_key_exists() 函數判斷某個數組中是否存在指定的 key,如果該 key 存在,則返回 true,否則返回 false。
array_intersect_ukey() 函數用回調函數比較鍵名來計算數組的交集。
array_intersect_uassoc() 函數使用用戶自定義的回調函數計算數組的交集,用回調函數比較索引。
array_intersect_key() 函數使用鍵名比較計算數組的交集。
array_intersect_assoc() 函數返回兩個或多個數組的交集數組。
array_intersect() 函數返回兩個或多個數組的交集數組。
array_flip() 函數返回一個反轉后的數組,如果同一值出現了多次,則最后一個鍵名將作為它的值,所有其他的鍵名都將丟失。
array_filter() 函數用回調函數過濾數組中的元素,如果自定義過濾函數返回 true,則被操作的數組的當前值就會被包含在返回的結果數組中, 並將結果組成一個新的數組。如果原數組是一個關聯數組,鍵名保持不變。
array_fill() 函數用給定的值填充數組,返回的數組有 number 個元素,值為 value。返回的數組使用數字索引,從 start 位置開始並遞增。如果 number 為 0 或小於 0,就會出錯。
array_diff_ukey() 返回一個數組,該數組包括了所有出現在 array1 中但是未出現在任何其它參數數組中的鍵名的值。注意關聯關系保留不變。與 array_diff() 不同的是,比較是根據鍵名而不是值來進行的。
array_diff_uassoc() 函數使用用戶自定義的回調函數 (callback) 做索引檢查來計算兩個或多個數組的差集。返回一個數組,該數組包括了在 array1 中但是不在任何其他參數數組中的值。
array_diff_key() 函數返回一個數組,該數組包括了所有在被比較的數組中,但是不在任何其他參數數組中的鍵。
array_diff_assoc() 函數返回兩個數組的差集數組。該數組包括了所有在被比較的數組中,但是不在任何其他參數數組中的鍵和值。
array_diff() 函數返回兩個數組的差集數組。該數組包括了所有在被比較的數組中,但是不在任何其他參數數組中的鍵值。
array_count_values() 函數用於統計數組中所有值出現的次數。
array_combine() 函數通過合並兩個數組來創建一個新數組,其中的一個數組是鍵名,另一個數組的值為鍵值。
array_chunk() 函數把一個數組分割為新的數組塊。
array_change_key_case() 函數將數組的所有的 KEY 都轉換為大寫或小寫。
array() 創建數組,帶有鍵和值。如果在規定數組時省略了鍵,則生成一個整數鍵,這個 key 從 0 開始,然后以 1 進行遞增。

這下面是一些常用的函數實例哦。以后大家一定能用的上!(本文將不斷更新,同時也希望熱心的網友朋友們能貢獻自己一點一滴的知識,大家共同進步,一起學習)

1、截取UTF-8編碼下字符串的函數

 1 /**
 2  * 截取UTF-8編碼下字符串的函數
 3  *
 4  * @param   string      $str        被截取的字符串
 5  * @param   int         $length     截取的長度
 6  * @param   bool        $append     是否附加省略號
 7  *
 8  * @return  string
 9  */
10 function sub_str($str, $length = 0, $append = true)
11 {
12     $str = trim($str);//去掉前后的空格
13     $strlength = strlen($str);
14 
15     if ($length == 0 || $length >= $strlength)
16     {
17         return $str;
18     }
19     elseif ($length < 0)
20     {
21         $length = $strlength + $length;
22         if ($length < 0)
23         {
24             $length = $strlength;
25         }
26     }
27 
28     if (function_exists('mb_substr'))
29     {
30         $newstr = mb_substr($str, 0, $length, EC_CHARSET);
31     }
32     elseif (function_exists('iconv_substr'))
33     {
34         $newstr = iconv_substr($str, 0, $length, EC_CHARSET);
35     }
36     else
37     {
38         //$newstr = trim_right(substr($str, 0, $length));
39         $newstr = substr($str, 0, $length);
40     }
41 
42     if ($append && $str != $newstr)
43     {
44         $newstr .= '...';
45     }
46 
47     return $newstr;
48 }
View Code

2、獲得用戶的真實IP地址

 1 /**
 2  * 獲得用戶的真實IP地址
 3  *
 4  * @access  public
 5  * @return  string
 6  */
 7 function real_ip()
 8 {
 9     static $realip = NULL;
10 
11     if ($realip !== NULL)
12     {
13         return $realip;
14     }
15 
16     if (isset($_SERVER))
17     {
18         if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
19         {
20             $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
21 
22             /* 取X-Forwarded-For中第一個非unknown的有效IP字符串 */
23             foreach ($arr AS $ip)
24             {
25                 $ip = trim($ip);
26 
27                 if ($ip != 'unknown')
28                 {
29                     $realip = $ip;
30 
31                     break;
32                 }
33             }
34         }
35         elseif (isset($_SERVER['HTTP_CLIENT_IP']))
36         {
37             $realip = $_SERVER['HTTP_CLIENT_IP'];
38         }
39         else
40         {
41             if (isset($_SERVER['REMOTE_ADDR']))
42             {
43                 $realip = $_SERVER['REMOTE_ADDR'];
44             }
45             else
46             {
47                 $realip = '0.0.0.0';
48             }
49         }
50     }
51     else
52     {
53         if (getenv('HTTP_X_FORWARDED_FOR'))
54         {
55             $realip = getenv('HTTP_X_FORWARDED_FOR');
56         }
57         elseif (getenv('HTTP_CLIENT_IP'))
58         {
59             $realip = getenv('HTTP_CLIENT_IP');
60         }
61         else
62         {
63             $realip = getenv('REMOTE_ADDR');
64         }
65     }
66 
67     preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
68     $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
69 
70     return $realip;
71 }
View Code

3、計算字符串的長度(漢字按照兩個字符計算)

 1 /**
 2  * 計算字符串的長度(漢字按照兩個字符計算)
 3  *
 4  * @param   string      $str        字符串
 5  *
 6  * @return  int
 7  */
 8 function str_len($str)
 9 {
10     $length = strlen(preg_replace('/[\x00-\x7F]/', '', $str));
11 
12     if ($length)
13     {
14         return strlen($str) - $length + intval($length / 3) * 2;
15     }
16     else
17     {
18         return strlen($str);
19     }
20 }
View Code

4、獲得用戶操作系統的換行符

 1 /**
 2  * 獲得用戶操作系統的換行符
 3  *
 4  * @access  public
 5  * @return  string
 6  */
 7 function get_crlf()
 8 {
 9 /* LF (Line Feed, 0x0A, \N) 和 CR(Carriage Return, 0x0D, \R) */
10     if (stristr($_SERVER['HTTP_USER_AGENT'], 'Win'))
11     {
12         $the_crlf = '\r\n';
13     }
14     elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mac'))
15     {
16         $the_crlf = '\r'; // for old MAC OS
17     }
18     else
19     {
20         $the_crlf = '\n';
21     }
22 
23     return $the_crlf;
24 }
View Code

5、郵件發送

  1 /**
  2  * 郵件發送
  3  *
  4  * @param: $name[string]        接收人姓名
  5  * @param: $email[string]       接收人郵件地址
  6  * @param: $subject[string]     郵件標題
  7  * @param: $content[string]     郵件內容
  8  * @param: $type[int]           0 普通郵件, 1 HTML郵件
  9  * @param: $notification[bool]  true 要求回執, false 不用回執
 10  *
 11  * @return boolean
 12  */
 13 function send_mail($name, $email, $subject, $content, $type = 0, $notification=false)
 14 {
 15     /* 如果郵件編碼不是EC_CHARSET,創建字符集轉換對象,轉換編碼 */
 16     if ($GLOBALS['_CFG']['mail_charset'] != EC_CHARSET)
 17     {
 18         $name      = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $name);
 19         $subject   = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $subject);
 20         $content   = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $content);
 21         $shop_name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $GLOBALS['_CFG']['shop_name']);
 22     }
 23     $charset   = $GLOBALS['_CFG']['mail_charset'];
 24     /**
 25      * 使用mail函數發送郵件
 26      */
 27     if ($GLOBALS['_CFG']['mail_service'] == 0 && function_exists('mail'))
 28     {
 29         /* 郵件的頭部信息 */
 30         $content_type = ($type == 0) ? 'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset;
 31         $headers = array();
 32         $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>';
 33         $headers[] = $content_type . '; format=flowed';
 34         if ($notification)
 35         {
 36             $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>';
 37         }
 38 
 39         $res = @mail($email, '=?' . $charset . '?B?' . base64_encode($subject) . '?=', $content, implode("\r\n", $headers));
 40 
 41         if (!$res)
 42         {
 43             $GLOBALS['err'] ->add($GLOBALS['_LANG']['sendemail_false']);
 44 
 45             return false;
 46         }
 47         else
 48         {
 49             return true;
 50         }
 51     }
 52     /**
 53      * 使用smtp服務發送郵件
 54      */
 55     else
 56     {
 57         /* 郵件的頭部信息 */
 58         $content_type = ($type == 0) ?
 59             'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset;
 60         $content   =  base64_encode($content);
 61 
 62         $headers = array();
 63         $headers[] = 'Date: ' . gmdate('D, j M Y H:i:s') . ' +0000';
 64         $headers[] = 'To: "' . '=?' . $charset . '?B?' . base64_encode($name) . '?=' . '" <' . $email. '>';
 65         $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>';
 66         $headers[] = 'Subject: ' . '=?' . $charset . '?B?' . base64_encode($subject) . '?=';
 67         $headers[] = $content_type . '; format=flowed';
 68         $headers[] = 'Content-Transfer-Encoding: base64';
 69         $headers[] = 'Content-Disposition: inline';
 70         if ($notification)
 71         {
 72             $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>';
 73         }
 74 
 75         /* 獲得郵件服務器的參數設置 */
 76         $params['host'] = $GLOBALS['_CFG']['smtp_host'];
 77         $params['port'] = $GLOBALS['_CFG']['smtp_port'];
 78         $params['user'] = $GLOBALS['_CFG']['smtp_user'];
 79         $params['pass'] = $GLOBALS['_CFG']['smtp_pass'];
 80 
 81         if (empty($params['host']) || empty($params['port']))
 82         {
 83             // 如果沒有設置主機和端口直接返回 false
 84             $GLOBALS['err'] ->add($GLOBALS['_LANG']['smtp_setting_error']);
 85 
 86             return false;
 87         }
 88         else
 89         {
 90             // 發送郵件
 91             if (!function_exists('fsockopen'))
 92             {
 93                 //如果fsockopen被禁用,直接返回
 94                 $GLOBALS['err']->add($GLOBALS['_LANG']['disabled_fsockopen']);
 95 
 96                 return false;
 97             }
 98 
 99             include_once(ROOT_PATH . 'includes/cls_smtp.php');
100             static $smtp;
101 
102             $send_params['recipients'] = $email;
103             $send_params['headers']    = $headers;
104             $send_params['from']       = $GLOBALS['_CFG']['smtp_mail'];
105             $send_params['body']       = $content;
106 
107             if (!isset($smtp))
108             {
109                 $smtp = new smtp($params);
110             }
111 
112             if ($smtp->connect() && $smtp->send($send_params))
113             {
114                 return true;
115             }
116             else
117             {
118                 $err_msg = $smtp->error_msg();
119                 if (empty($err_msg))
120                 {
121                     $GLOBALS['err']->add('Unknown Error');
122                 }
123                 else
124                 {
125                     if (strpos($err_msg, 'Failed to connect to server') !== false)
126                     {
127                         $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['smtp_connect_failure'], $params['host'] . ':' . $params['port']));
128                     }
129                     else if (strpos($err_msg, 'AUTH command failed') !== false)
130                     {
131                         $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_login_failure']);
132                     }
133                     elseif (strpos($err_msg, 'bad sequence of commands') !== false)
134                     {
135                         $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_refuse']);
136                     }
137                     else
138                     {
139                         $GLOBALS['err']->add($err_msg);
140                     }
141                 }
142 
143                 return false;
144             }
145         }
146     }
147 }
View Code

6、獲得服務器上的 GD 版本

 1 /**
 2  * 獲得服務器上的 GD 版本
 3  *
 4  * @access      public
 5  * @return      int         可能的值為0,1,2
 6  */
 7 function gd_version()
 8 {
 9     include_once(ROOT_PATH . 'includes/cls_image.php');
10 
11     return cls_image::gd_version();
12 }
13 
14 if (!function_exists('file_get_contents'))
15 {
16     /**
17      * 如果系統不存在file_get_contents函數則聲明該函數
18      *
19      * @access  public
20      * @param   string  $file
21      * @return  mix
22      */
23     function file_get_contents($file)
24     {
25         if (($fp = @fopen($file, 'rb')) === false)
26         {
27             return false;
28         }
29         else
30         {
31             $fsize = @filesize($file);
32             if ($fsize)
33             {
34                 $contents = fread($fp, $fsize);
35             }
36             else
37             {
38                 $contents = '';
39             }
40             fclose($fp);
41 
42             return $contents;
43         }
44     }
45 }
46 
47 if (!function_exists('file_put_contents'))
48 {
49     define('FILE_APPEND', 'FILE_APPEND');
50 
51     /**
52      * 如果系統不存在file_put_contents函數則聲明該函數
53      *
54      * @access  public
55      * @param   string  $file
56      * @param   mix     $data
57      * @return  int
58      */
59     function file_put_contents($file, $data, $flags = '')
60     {
61         $contents = (is_array($data)) ? implode('', $data) : $data;
62 
63         if ($flags == 'FILE_APPEND')
64         {
65             $mode = 'ab+';
66         }
67         else
68         {
69             $mode = 'wb';
70         }
71 
72         if (($fp = @fopen($file, $mode)) === false)
73         {
74             return false;
75         }
76         else
77         {
78             $bytes = fwrite($fp, $contents);
79             fclose($fp);
80 
81             return $bytes;
82         }
83     }
84 }
85 
86 if (!function_exists('floatval'))
87 {
88     /**
89      * 如果系統不存在 floatval 函數則聲明該函數
90      *
91      * @access  public
92      * @param   mix     $n
93      * @return  float
94      */
95     function floatval($n)
96     {
97         return (float) $n;
98     }
99 }
View Code

7、文件或目錄權限檢查函數

  1 /**
  2  * 文件或目錄權限檢查函數
  3  *
  4  * @access          public
  5  * @param           string  $file_path   文件路徑
  6  * @param           bool    $rename_prv  是否在檢查修改權限時檢查執行rename()函數的權限
  7  *
  8  * @return          int     返回值的取值范圍為{0 <= x <= 15},每個值表示的含義可由四位二進制數組合推出。
  9  *                          返回值在二進制計數法中,四位由高到低分別代表
 10  *                          可執行rename()函數權限、可對文件追加內容權限、可寫入文件權限、可讀取文件權限。
 11  */
 12 function file_mode_info($file_path)
 13 {
 14     /* 如果不存在,則不可讀、不可寫、不可改 */
 15     if (!file_exists($file_path))
 16     {
 17         return false;
 18     }
 19 
 20     $mark = 0;
 21 
 22     if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
 23     {
 24         /* 測試文件 */
 25         $test_file = $file_path . '/cf_test.txt';
 26 
 27         /* 如果是目錄 */
 28         if (is_dir($file_path))
 29         {
 30             /* 檢查目錄是否可讀 */
 31             $dir = @opendir($file_path);
 32             if ($dir === false)
 33             {
 34                 return $mark; //如果目錄打開失敗,直接返回目錄不可修改、不可寫、不可讀
 35             }
 36             if (@readdir($dir) !== false)
 37             {
 38                 $mark ^= 1; //目錄可讀 001,目錄不可讀 000
 39             }
 40             @closedir($dir);
 41 
 42             /* 檢查目錄是否可寫 */
 43             $fp = @fopen($test_file, 'wb');
 44             if ($fp === false)
 45             {
 46                 return $mark; //如果目錄中的文件創建失敗,返回不可寫。
 47             }
 48             if (@fwrite($fp, 'directory access testing.') !== false)
 49             {
 50                 $mark ^= 2; //目錄可寫可讀011,目錄可寫不可讀 010
 51             }
 52             @fclose($fp);
 53 
 54             @unlink($test_file);
 55 
 56             /* 檢查目錄是否可修改 */
 57             $fp = @fopen($test_file, 'ab+');
 58             if ($fp === false)
 59             {
 60                 return $mark;
 61             }
 62             if (@fwrite($fp, "modify test.\r\n") !== false)
 63             {
 64                 $mark ^= 4;
 65             }
 66             @fclose($fp);
 67 
 68             /* 檢查目錄下是否有執行rename()函數的權限 */
 69             if (@rename($test_file, $test_file) !== false)
 70             {
 71                 $mark ^= 8;
 72             }
 73             @unlink($test_file);
 74         }
 75         /* 如果是文件 */
 76         elseif (is_file($file_path))
 77         {
 78             /* 以讀方式打開 */
 79             $fp = @fopen($file_path, 'rb');
 80             if ($fp)
 81             {
 82                 $mark ^= 1; //可讀 001
 83             }
 84             @fclose($fp);
 85 
 86             /* 試着修改文件 */
 87             $fp = @fopen($file_path, 'ab+');
 88             if ($fp && @fwrite($fp, '') !== false)
 89             {
 90                 $mark ^= 6; //可修改可寫可讀 111,不可修改可寫可讀011...
 91             }
 92             @fclose($fp);
 93 
 94             /* 檢查目錄下是否有執行rename()函數的權限 */
 95             if (@rename($test_file, $test_file) !== false)
 96             {
 97                 $mark ^= 8;
 98             }
 99         }
100     }
101     else
102     {
103         if (@is_readable($file_path))
104         {
105             $mark ^= 1;
106         }
107 
108         if (@is_writable($file_path))
109         {
110             $mark ^= 14;
111         }
112     }
113 
114     return $mark;
115 }
116 
117 function log_write($arg, $file = '', $line = '')
118 {
119     if ((DEBUG_MODE & 4) != 4)
120     {
121         return;
122     }
123 
124     $str = "\r\n-- ". date('Y-m-d H:i:s'). " --------------------------------------------------------------\r\n";
125     $str .= "FILE: $file\r\nLINE: $line\r\n";
126 
127     if (is_array($arg))
128     {
129         $str .= '$arg = array(';
130         foreach ($arg AS $val)
131         {
132             foreach ($val AS $key => $list)
133             {
134                 $str .= "'$key' => '$list'\r\n";
135             }
136         }
137         $str .= ")\r\n";
138     }
139     else
140     {
141         $str .= $arg;
142     }
143 
144     file_put_contents(ROOT_PATH . DATA_DIR . '/log.txt', $str);
145 }
View Code

8、檢查目標文件夾是否存在,如果不存在則自動創建該目錄

 1 /**
 2  * 檢查目標文件夾是否存在,如果不存在則自動創建該目錄
 3  *
 4  * @access      public
 5  * @param       string      folder     目錄路徑。不能使用相對於網站根目錄的URL
 6  *
 7  * @return      bool
 8  */
 9 function make_dir($folder)
10 {
11     $reval = false;
12 
13     if (!file_exists($folder))
14     {
15         /* 如果目錄不存在則嘗試創建該目錄 */
16         @umask(0);
17 
18         /* 將目錄路徑拆分成數組 */
19         preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);
20 
21         /* 如果第一個字符為/則當作物理路徑處理 */
22         $base = ($atmp[0][0] == '/') ? '/' : '';
23 
24         /* 遍歷包含路徑信息的數組 */
25         foreach ($atmp[1] AS $val)
26         {
27             if ('' != $val)
28             {
29                 $base .= $val;
30 
31                 if ('..' == $val || '.' == $val)
32                 {
33                     /* 如果目錄為.或者..則直接補/繼續下一個循環 */
34                     $base .= '/';
35 
36                     continue;
37                 }
38             }
39             else
40             {
41                 continue;
42             }
43 
44             $base .= '/';
45 
46             if (!file_exists($base))
47             {
48                 /* 嘗試創建目錄,如果創建失敗則繼續循環 */
49                 if (@mkdir(rtrim($base, '/'), 0777))
50                 {
51                     @chmod($base, 0777);
52                     $reval = true;
53                 }
54             }
55         }
56     }
57     else
58     {
59         /* 路徑已經存在。返回該路徑是不是一個目錄 */
60         $reval = is_dir($folder);
61     }
62 
63     clearstatcache();
64 
65     return $reval;
66 }
View Code

9、獲得系統是否啟用了 gzip

 1 /**
 2  * 獲得系統是否啟用了 gzip
 3  *
 4  * @access  public
 5  *
 6  * @return  boolean
 7  */
 8 function gzip_enabled()
 9 {
10     static $enabled_gzip = NULL;
11 
12     if ($enabled_gzip === NULL)
13     {
14         $enabled_gzip = ($GLOBALS['_CFG']['enable_gzip'] && function_exists('ob_gzhandler'));
15     }
16 
17     return $enabled_gzip;
18 }
View Code

10、遞歸方式的對變量中的特殊字符進行轉義

 1 /**
 2  * 遞歸方式的對變量中的特殊字符進行轉義
 3  *
 4  * @access  public
 5  * @param   mix     $value
 6  *
 7  * @return  mix
 8  */
 9 function addslashes_deep($value)
10 {
11     if (empty($value))
12     {
13         return $value;
14     }
15     else
16     {
17         return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
18     }
19 }
View Code

11、將對象成員變量或者數組的特殊字符進行轉

 1 /**
 2  * 將對象成員變量或者數組的特殊字符進行轉義
 3  *
 4  * @access   public
 5  * @param    mix        $obj      對象或者數組
 6  * @author   Xuan Yan
 7  *
 8  * @return   mix                  對象或者數組
 9  */
10 function addslashes_deep_obj($obj)
11 {
12     if (is_object($obj) == true)
13     {
14         foreach ($obj AS $key => $val)
15         {
16             $obj->$key = addslashes_deep($val);
17         }
18     }
19     else
20     {
21         $obj = addslashes_deep($obj);
22     }
23 
24     return $obj;
25 }
View Code

12、遞歸方式的對變量中的特殊字符去除轉義

 1 /**
 2  * 遞歸方式的對變量中的特殊字符去除轉義
 3  *
 4  * @access  public
 5  * @param   mix     $value
 6  *
 7  * @return  mix
 8  */
 9 function stripslashes_deep($value)
10 {
11     if (empty($value))
12     {
13         return $value;
14     }
15     else
16     {
17         return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
18     }
19 }
View Code

13、將一個字串中含有全角的數字字符、字母、空格或'%+-()'字符轉換為相應半角字符

 1 /**
 2  *  將一個字串中含有全角的數字字符、字母、空格或'%+-()'字符轉換為相應半角字符
 3  *
 4  * @access  public
 5  * @param   string       $str         待轉換字串
 6  *
 7  * @return  string       $str         處理后字串
 8  */
 9 function make_semiangle($str)
10 {
11     $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',
12                  '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
13                  'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',
14                  'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',
15                  'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',
16                  'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',
17                  'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',
18                  'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',
19                  'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',
20                  'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
21                  'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',
22                  't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',
23                  'y' => 'y', 'z' => 'z',
24                  '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[',
25                  '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']',
26                  '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => '<',
27                  '》' => '>',
28                  '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',
29                  ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.',
30                  ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|',
31                  '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"',
32                  ' ' => ' ');
33 
34     return strtr($str, $arr);
35 }
View Code

14、 過濾用戶輸入的基本數據,防止script攻擊

 1 /**
 2  * 過濾用戶輸入的基本數據,防止script攻擊
 3  *
 4  * @access      public
 5  * @return      string
 6  */
 7 function compile_str($str)
 8 {
 9     $arr = array('<' => '<', '>' => '>');
10 
11     return strtr($str, $arr);
12 }
View Code

15、檢查文件類型

  1 /**
  2  * 檢查文件類型
  3  *
  4  * @access      public
  5  * @param       string      filename            文件名
  6  * @param       string      realname            真實文件名
  7  * @param       string      limit_ext_types     允許的文件類型
  8  * @return      string
  9  */
 10 function check_file_type($filename, $realname = '', $limit_ext_types = '')
 11 {
 12     if ($realname)
 13     {
 14         $extname = strtolower(substr($realname, strrpos($realname, '.') + 1));
 15     }
 16     else
 17     {
 18         $extname = strtolower(substr($filename, strrpos($filename, '.') + 1));
 19     }
 20 
 21     if ($limit_ext_types && stristr($limit_ext_types, '|' . $extname . '|') === false)
 22     {
 23         return '';
 24     }
 25 
 26     $str = $format = '';
 27 
 28     $file = @fopen($filename, 'rb');
 29     if ($file)
 30     {
 31         $str = @fread($file, 0x400); // 讀取前 1024 個字節
 32         @fclose($file);
 33     }
 34     else
 35     {
 36         if (stristr($filename, ROOT_PATH) === false)
 37         {
 38             if ($extname == 'jpg' || $extname == 'jpeg' || $extname == 'gif' || $extname == 'png' || $extname == 'doc' ||
 39                 $extname == 'xls' || $extname == 'txt'  || $extname == 'zip' || $extname == 'rar' || $extname == 'ppt' ||
 40                 $extname == 'pdf' || $extname == 'rm'   || $extname == 'mid' || $extname == 'wav' || $extname == 'bmp' ||
 41                 $extname == 'swf' || $extname == 'chm'  || $extname == 'sql' || $extname == 'cert'|| $extname == 'pptx' || 
 42                 $extname == 'xlsx' || $extname == 'docx')
 43             {
 44                 $format = $extname;
 45             }
 46         }
 47         else
 48         {
 49             return '';
 50         }
 51     }
 52 
 53     if ($format == '' && strlen($str) >= 2 )
 54     {
 55         if (substr($str, 0, 4) == 'MThd' && $extname != 'txt')
 56         {
 57             $format = 'mid';
 58         }
 59         elseif (substr($str, 0, 4) == 'RIFF' && $extname == 'wav')
 60         {
 61             $format = 'wav';
 62         }
 63         elseif (substr($str ,0, 3) == "\xFF\xD8\xFF")
 64         {
 65             $format = 'jpg';
 66         }
 67         elseif (substr($str ,0, 4) == 'GIF8' && $extname != 'txt')
 68         {
 69             $format = 'gif';
 70         }
 71         elseif (substr($str ,0, 8) == "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A")
 72         {
 73             $format = 'png';
 74         }
 75         elseif (substr($str ,0, 2) == 'BM' && $extname != 'txt')
 76         {
 77             $format = 'bmp';
 78         }
 79         elseif ((substr($str ,0, 3) == 'CWS' || substr($str ,0, 3) == 'FWS') && $extname != 'txt')
 80         {
 81             $format = 'swf';
 82         }
 83         elseif (substr($str ,0, 4) == "\xD0\xCF\x11\xE0")
 84         {   // D0CF11E == DOCFILE == Microsoft Office Document
 85             if (substr($str,0x200,4) == "\xEC\xA5\xC1\x00" || $extname == 'doc')
 86             {
 87                 $format = 'doc';
 88             }
 89             elseif (substr($str,0x200,2) == "\x09\x08" || $extname == 'xls')
 90             {
 91                 $format = 'xls';
 92             } elseif (substr($str,0x200,4) == "\xFD\xFF\xFF\xFF" || $extname == 'ppt')
 93             {
 94                 $format = 'ppt';
 95             }
 96         } elseif (substr($str ,0, 4) == "PK\x03\x04")
 97         {
 98             if (substr($str,0x200,4) == "\xEC\xA5\xC1\x00" || $extname == 'docx')
 99             {
100                 $format = 'docx';
101             }
102             elseif (substr($str,0x200,2) == "\x09\x08" || $extname == 'xlsx')
103             {
104                 $format = 'xlsx';
105             } elseif (substr($str,0x200,4) == "\xFD\xFF\xFF\xFF" || $extname == 'pptx')
106             {
107                 $format = 'pptx';
108             }else
109             {
110                 $format = 'zip';
111             }
112         } elseif (substr($str ,0, 4) == 'Rar!' && $extname != 'txt')
113         {
114             $format = 'rar';
115         } elseif (substr($str ,0, 4) == "\x25PDF")
116         {
117             $format = 'pdf';
118         } elseif (substr($str ,0, 3) == "\x30\x82\x0A")
119         {
120             $format = 'cert';
121         } elseif (substr($str ,0, 4) == 'ITSF' && $extname != 'txt')
122         {
123             $format = 'chm';
124         } elseif (substr($str ,0, 4) == "\x2ERMF")
125         {
126             $format = 'rm';
127         } elseif ($extname == 'sql')
128         {
129             $format = 'sql';
130         } elseif ($extname == 'txt')
131         {
132             $format = 'txt';
133         }
134     }
135 
136     if ($limit_ext_types && stristr($limit_ext_types, '|' . $format . '|') === false)
137     {
138         $format = '';
139     }
140 
141     return $format;
142 }
View Code

16、對 MYSQL LIKE 的內容進行轉義

 1 /**
 2  * 對 MYSQL LIKE 的內容進行轉義
 3  *
 4  * @access      public
 5  * @param       string      string  內容
 6  * @return      string
 7  */
 8 function mysql_like_quote($str)
 9 {
10     return strtr($str, array("\\\\" => "\\\\\\\\", '_' => '\_', '%' => '\%', "\'" => "\\\\\'"));
11 }
View Code

17、獲取服務器的ip

 1 /**
 2  * 獲取服務器的ip
 3  *
 4  * @access      public
 5  *
 6  * @return string
 7  **/
 8 function real_server_ip()
 9 {
10     static $serverip = NULL;
11 
12     if ($serverip !== NULL)
13     {
14         return $serverip;
15     }
16 
17     if (isset($_SERVER))
18     {
19         if (isset($_SERVER['SERVER_ADDR']))
20         {
21             $serverip = $_SERVER['SERVER_ADDR'];
22         }
23         else
24         {
25             $serverip = '0.0.0.0';
26         }
27     }
28     else
29     {
30         $serverip = getenv('SERVER_ADDR');
31     }
32 
33     return $serverip;
34 }
View Code

18、自定義 header 函數,用於過濾可能出現的安全隱患

  1 /**
  2  * 自定義 header 函數,用於過濾可能出現的安全隱患
  3  *
  4  * @param   string  string  內容
  5  *
  6  * @return  void
  7  **/
  8 function ecs_header($string, $replace = true, $http_response_code = 0)
  9 {
 10     if (strpos($string, '../upgrade/index.php') === 0)
 11     {
 12         echo '<script type="text/javascript">window.location.href="' . $string . '";</script>';
 13     }
 14     $string = str_replace(array("\r", "\n"), array('', ''), $string);
 15 
 16     if (preg_match('/^\s*location:/is', $string))
 17     {
 18         @header($string . "\n", $replace);
 19 
 20         exit();
 21     }
 22 
 23     if (empty($http_response_code) || PHP_VERSION < '4.3')
 24     {
 25         @header($string, $replace);
 26     }
 27     else
 28     {
 29         @header($string, $replace, $http_response_code);
 30     }
 31 }
 32 
 33 function ecs_iconv($source_lang, $target_lang, $source_string = '')
 34 {
 35     static $chs = NULL;
 36 
 37     /* 如果字符串為空或者字符串不需要轉換,直接返回 */
 38     if ($source_lang == $target_lang || $source_string == '' || preg_match("/[\x80-\xFF]+/", $source_string) == 0)
 39     {
 40         return $source_string;
 41     }
 42 
 43     if ($chs === NULL)
 44     {
 45         require_once(ROOT_PATH . 'includes/cls_iconv.php');
 46         $chs = new Chinese(ROOT_PATH);
 47     }
 48 
 49     return $chs->Convert($source_lang, $target_lang, $source_string);
 50 }
 51 
 52 function ecs_geoip($ip)
 53 {
 54     static $fp = NULL, $offset = array(), $index = NULL;
 55 
 56     $ip    = gethostbyname($ip);
 57     $ipdot = explode('.', $ip);
 58     $ip    = pack('N', ip2long($ip));
 59 
 60     $ipdot[0] = (int)$ipdot[0];
 61     $ipdot[1] = (int)$ipdot[1];
 62     if ($ipdot[0] == 10 || $ipdot[0] == 127 || ($ipdot[0] == 192 && $ipdot[1] == 168) || ($ipdot[0] == 172 && ($ipdot[1] >= 16 && $ipdot[1] <= 31)))
 63     {
 64         return 'LAN';
 65     }
 66 
 67     if ($fp === NULL)
 68     {
 69         $fp = fopen(ROOT_PATH . 'includes/codetable/ipdata.dat', 'rb');
 70         if ($fp === false)
 71         {
 72             return 'Invalid IP data file';
 73         }
 74         $offset = unpack('Nlen', fread($fp, 4));
 75         if ($offset['len'] < 4)
 76         {
 77             return 'Invalid IP data file';
 78         }
 79         $index  = fread($fp, $offset['len'] - 4);
 80     }
 81 
 82     $length = $offset['len'] - 1028;
 83     $start  = unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);
 84     for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8)
 85     {
 86         if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} >= $ip)
 87         {
 88             $index_offset = unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");
 89             $index_length = unpack('Clen', $index{$start + 7});
 90             break;
 91         }
 92     }
 93 
 94     fseek($fp, $offset['len'] + $index_offset['len'] - 1024);
 95     $area = fread($fp, $index_length['len']);
 96 
 97     fclose($fp);
 98     $fp = NULL;
 99 
100     return $area;
101 }
View Code

19、去除字符串右側可能出現的亂碼

 1 /**
 2  * 去除字符串右側可能出現的亂碼
 3  *
 4  * @param   string      $str        字符串
 5  *
 6  * @return  string
 7  */
 8 function trim_right($str)
 9 {
10     $len = strlen($str);
11     /* 為空或單個字符直接返回 */
12     if ($len == 0 || ord($str{$len-1}) < 127)
13     {
14         return $str;
15     }
16     /* 有前導字符的直接把前導字符去掉 */
17     if (ord($str{$len-1}) >= 192)
18     {
19        return substr($str, 0, $len-1);
20     }
21     /* 有非獨立的字符,先把非獨立字符去掉,再驗證非獨立的字符是不是一個完整的字,不是連原來前導字符也截取掉 */
22     $r_len = strlen(rtrim($str, "\x80..\xBF"));
23     if ($r_len == 0 || ord($str{$r_len-1}) < 127)
24     {
25         return sub_str($str, 0, $r_len);
26     }
27 
28     $as_num = ord(~$str{$r_len -1});
29     if ($as_num > (1<<(6 + $r_len - $len)))
30     {
31         return $str;
32     }
33     else
34     {
35         return substr($str, 0, $r_len-1);
36     }
37 }
View Code

20、將上傳文件轉移到指定位置

 1 /**
 2  * 將上傳文件轉移到指定位置
 3  *
 4  * @param string $file_name
 5  * @param string $target_name
 6  * @return blog
 7  */
 8 function move_upload_file($file_name, $target_name = '')
 9 {
10     if (function_exists("move_uploaded_file"))
11     {
12         if (move_uploaded_file($file_name, $target_name))
13         {
14             @chmod($target_name,0755);
15             return true;
16         }
17         else if (copy($file_name, $target_name))
18         {
19             @chmod($target_name,0755);
20             return true;
21         }
22     }
23     elseif (copy($file_name, $target_name))
24     {
25         @chmod($target_name,0755);
26         return true;
27     }
28     return false;
29 }
View Code

21、將JSON傳遞的參數轉碼

 1 /**
 2  * 將JSON傳遞的參數轉碼
 3  *
 4  * @param string $str
 5  * @return string
 6  */
 7 function json_str_iconv($str)
 8 {
 9     if (EC_CHARSET != 'utf-8')
10     {
11         if (is_string($str))
12         {
13             return addslashes(stripslashes(ecs_iconv('utf-8', EC_CHARSET, $str)));
14         }
15         elseif (is_array($str))
16         {
17             foreach ($str as $key => $value)
18             {
19                 $str[$key] = json_str_iconv($value);
20             }
21             return $str;
22         }
23         elseif (is_object($str))
24         {
25             foreach ($str as $key => $value)
26             {
27                 $str->$key = json_str_iconv($value);
28             }
29             return $str;
30         }
31         else
32         {
33             return $str;
34         }
35     }
36     return $str;
37 }
View Code

22、循環轉碼成utf8內容

 1 /**
 2  * 循環轉碼成utf8內容
 3  *
 4  * @param string $str
 5  * @return string
 6  */
 7 function to_utf8_iconv($str)
 8 {
 9     if (EC_CHARSET != 'utf-8')
10     {
11         if (is_string($str))
12         {
13             return ecs_iconv(EC_CHARSET, 'utf-8', $str);
14         }
15         elseif (is_array($str))
16         {
17             foreach ($str as $key => $value)
18             {
19                 $str[$key] = to_utf8_iconv($value);
20             }
21             return $str;
22         }
23         elseif (is_object($str))
24         {
25             foreach ($str as $key => $value)
26             {
27                 $str->$key = to_utf8_iconv($value);
28             }
29             return $str;
30         }
31         else
32         {
33             return $str;
34         }
35     }
36     return $str;
37 }
View Code

23、獲取文件后綴名,並判斷是否合法

 1 /**
 2  * 獲取文件后綴名,並判斷是否合法
 3  *
 4  * @param string $file_name
 5  * @param array $allow_type
 6  * @return blob
 7  */
 8 function get_file_suffix($file_name, $allow_type = array())
 9 {
10     $file_suffix = strtolower(array_pop(explode('.', $file_name)));
11     if (empty($allow_type))
12     {
13         return $file_suffix;
14     }
15     else
16     {
17         if (in_array($file_suffix, $allow_type))
18         {
19             return true;
20         }
21         else
22         {
23             return false;
24         }
25     }
26 }
View Code

24、 讀結果緩存文件

 1 /**
 2  * 讀結果緩存文件
 3  *
 4  * @params  string  $cache_name
 5  *
 6  * @return  array   $data
 7  */
 8 function read_static_cache($cache_name)
 9 {
10     if ((DEBUG_MODE & 2) == 2)
11     {
12         return false;
13     }
14     static $result = array();
15     if (!empty($result[$cache_name]))
16     {
17         return $result[$cache_name];
18     }
19     $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
20     if (file_exists($cache_file_path))
21     {
22         include_once($cache_file_path);
23         $result[$cache_name] = $data;
24         return $result[$cache_name];
25     }
26     else
27     {
28         return false;
29     }
30 }
View Code

25、 寫結果緩存文件

 1 /**
 2  * 寫結果緩存文件
 3  *
 4  * @params  string  $cache_name
 5  * @params  string  $caches
 6  *
 7  * @return
 8  */
 9 function write_static_cache($cache_name, $caches)
10 {
11     if ((DEBUG_MODE & 2) == 2)
12     {
13         return false;
14     }
15     $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
16     $content = "<?php\r\n";
17     $content .= "\$data = " . var_export($caches, true) . ";\r\n";
18     $content .= "?>";
19     file_put_contents($cache_file_path, $content, LOCK_EX);
20 }
View Code

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM