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

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

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

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() 函數html

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() 函數java

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() 函數node

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() 函數mysql

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 進行遞增。web

這下面是一些經常使用的函數實例哦。之後你們必定能用的上!(本文將不斷更新,同時也但願熱心的網友朋友們能貢獻本身一點一滴的知識,你們共同進步,一塊兒學習)算法

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

 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

二、得到用戶的真實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

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

 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

四、得到用戶操做系統的換行符

 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

五、郵件發送

  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

六、得到服務器上的 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

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

  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

八、檢查目標文件夾是否存在,若是不存在則自動建立該目錄

 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

九、得到系統是否啓用了 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

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

 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

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

 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

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

 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

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

 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

1四、 過濾用戶輸入的基本數據,防止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

1五、檢查文件類型

  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

1六、對 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

1七、獲取服務器的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

1八、自定義 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

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

 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

2一、將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

2二、循環轉碼成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

2三、獲取文件後綴名,並判斷是否合法

 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

2四、 讀結果緩存文件

 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

2五、 寫結果緩存文件

 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
相關文章
相關標籤/搜索