PHP開發常用函數
在共過開發中,我經常要用到一些html' target='_blank'>PHP函數,有時會不記得,這里把這些常用函數總結到一起。本篇列舉了PHP程序員開發中經常用到的php函數。幾乎每個函數都有例子,老手可以看看當做溫習,新手可以背理論,然后把例子敲他幾遍,后面再開發中,開發效率絕對有所提高。例子大多取自w3cschool標準例子和網上的一些資源,部分為個人所寫,均經過測試。如果要裝載本文,還請注明來源 :http://blog.csdn.net/qq_22327455。
一.檢查函數
1.empty()
empty() 函數是用來測試變量是否已經配置。若變量已存在、非空字符串或者非零,則返回 false 值;反之返回 true值。所以,當字符串的值為0時,也返回true,就是執行empty內部的語句。
empty()函數 判斷值為否為空
若變量不存在則返回 TRUE
若變量存在且其值為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE
若變量存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE
empty() 只檢測變量,檢測任何非變量的東西都將導致解析錯誤。換句話說,后邊的語句將不會起作用: empty(addslashes($name))。
2.isset()
isset() 函數 一般用來檢測變量是否設置。
若變量不存在則返回 FALSE
若變量存在且其值為NULL,也返回 FALSE
若變量存在且值不為NULL,則返回 TURE
同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE
使用 unset() 釋放變量之后,它將不再是 isset()。
如檢測 $id 變量,當 $id=0 時,用empty() 和 isset() 來檢測變量 $id 是否已經配置,兩都將返回不同的值—— empty() 認為沒有配置,isset() 能夠取得 $id 的值:
我們在使用變量處理函數時,當該變量可能出現0的值,使用 empty() 要小心,這個時候用 isset 取代它更明智一些。
如果變量為0,則empty()會返回TRUE,isset()會返回TRUE;
如果變量為空字符串,則empty()會返回TRUE,isset()會返回TRUE;
如果變量未定義,則empty()會返回TRUE,isset()會返回FLASE;
3.defined() 函數檢查某常量是否存在。若常量存在,則返回 true,否則返回 false。
例子
<?php
define("GREETING","Hello world!");
echo defined("GREETING"); //輸出:1
?>
4.is_int()
is_int() 判斷變量類型是否為整數類型。
其他類似判斷變量類型函數:is_array() is_double() is_float() is_integer() is_long() is_object() is_real() is_string()
------------------------------------------------------------------------------------------------------------------------------------------------------------------
二. 數組函數
1.array_keys()
array_keys()定義: 函數返回包含數組中所有鍵名的一個新數組。
array_keys() 案例:
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a)); //輸出:Array ( [0] => a [1] => b [2] => c )
2.array_values()
array_values()定義: 函數返回一個包含給定數組中所有鍵值的數組,但不保留鍵名。
array_values() 案例:
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a)); //輸出:Array ( [0] => Horse [1] => Cat [2] => Dog )
3.array_filter()
array_filter() 定義:函數用回調函數過濾數組中的元素,如果自定義過濾函數返回 true,則被操作的數組的當前值就會被包含在返回的結果數組中, 并將結果組成一個新的數組。如果原數組是一個關聯數組,鍵名保持不變。
array_filter() 語法:array_filter(array,function)
array_filter() 案例:
function test($v){
if($v === 'Cat'){
return true;
}
return false;
}
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_filter($a,"test")); //輸出:Array ( [1] => Cat )
4.array_slice() 定義:函數在數組中根據條件取出一段值,并返回。
array_slice() 語法:array_slice(array,offset,length,preserve)
參數 描述
offset:必需。數值。規定取出元素的開始位置。
如果是正數,則從前往后開始取,如果是負值,從后向前取 offset 絕對值。
length:可選。數值。規定被返回數組的長度。
如果 length 為正,則返回該數量的元素。
如果 length 為負,則序列將終止在距離數組末端這么遠的地方。
如果省略,則序列將從 offset 開始直到 array 的末端。
5.array_slice() 案例:
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird",4=>"lili",5=>"james");
print_r(array_slice($a,0)); //輸出:Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird [4] => lili [5] => james )
print_r(array_slice($a,0,2)); //輸出:Array ( [0] => Dog [1] => Cat )
print_r(array_slice($a,0,-2)); //輸出:Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )
print_r(array_slice($a,-2,-1)); //輸出:Array ( [0] => lili )
print_r(array_slice($a,-1,-2)); //輸出:Array()
6.array_serch()
array_search() 函數與 in_array() 一樣,在數組中查找一個鍵值。如果找到了該值,匹配元素的鍵名會被返回。如果沒找到,則返回 false。
<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_search("Dog",$a); //輸出:a
?>
7.array_merge()
array_merge() 函數把兩個或多個數組合并為一個數組。
例子
<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2)); //輸出:Array ( [a] => Horse [b] => Cat [c] => Cow )
?>
8.array_combine()
array_combine() 函數通過合并兩個數組來創建一個新數組,其中的一個數組是鍵名,另一個數組的值為鍵值。如果其中一個數組為空,或者兩個數組的元素個數不同,則該函數返回 false。
例子
<?php
$a1=array("a","b","c","d");
$a2=array("Cat","Dog","Horse","Cow");
print_r(array_combine($a1,$a2)); //輸出:Array ( [a] => Cat [b] => Dog [c] => Horse [d] => Cow )
?>
9.is_array()
is_array 判斷變量類型是否為數組類型。若變量為數組類型則返回 true,否則返回 false。
10.in_array() in_array(value,array,type)
in_array() 函數在數組中搜索給定的值。
如果給定的值 value 存在于數組 array 中則返回 true。如果第三個參數設置為 true,函數只有在元素存在于數組中且數據類型與給定值相同時才返回 true。
如果沒有在數組中找到參數,函數返回 false。
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);
if (in_array(23,$people, TRUE)){
echo "Match found<br />";
}else{
echo "Match not found<br />";
}
?>
輸出:Match found//數據類型與給定值都相同
if (in_array("23",$people, TRUE)){
echo "Match found<br />";
}else{
echo "Match not found<br />";
}
輸出:Match not found//數據類型不同,給定值相同
11.count() sizeof() 該函數是 count() 的別名。
count() 函數計算數組中的單元數目或對象中的屬性個數。對于數組,返回其元素的個數,對于其他值,返回 1。如果參數是變量而變量沒有定義,則返回 0。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");
$result = count($people);
echo $result; //輸出:4
?>
12.array_push() array_push() 函數向第一個參數的數組尾部添加一個或多個元素(入棧),然后返回新數組的長度。該函數等于多次調用 $array[] = $value。
<?php
$arr = array();
$arr[]= 'john';
array_push($arr, 'jams','tome');
print_r($arr); //輸出: Array ( [0] => john [1] => jams [2] => tome )
?>
13.array_pop()
array_pop() 函數刪除數組中的最后一個元素。
<?php
$a=array("Dog","Cat","Horse");
array_pop($a);
print_r($a);//輸出:Array ( [0] => Dog [1] => Cat )
?>
14.array_unshift() array_unshift(array,value1,value2,value3...)
array_unshift() 函數在數組開頭插入一個或多個元素。
<?php
$a=array("a"=>"Cat","b"=>"Dog");
array_unshift($a,"Horse");
print_r($a);// 輸出:Array ( [0] => Horse [a] => Cat [b] => Dog )
?>
15.array_shift()
array_shift() 函數刪除數組中的第一個元素,并返回被刪除元素的值。
<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($a);
print_r ($a); //輸出:Dog Array ( [b] => Cat [c] => Horse )
?>
16.array_flip()
array_flip() 函數返回一個反轉后的數組,如果同一值出現了多次,則最后一個鍵名將作為它的值,所有其他的鍵名都將丟失。
如果原數組中的值的數據類型不是字符串或整數,函數將報錯。
<?php
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_flip($a)); //輸出:Array ( [Dog] => 0 [Cat] => 1 [Horse] => 2 )
?>
17.array_key_exists() array_key_exists(key,array)
array_key_exists() 函數判斷某個數組中是否存在指定的 key,如果該 key 存在,則返回 true,否則返回 false。
<?php
$a=array("a"=>"Dog","b"=>"Cat");
if (array_key_exists("a",$a)){
echo "Key exists!";
}else{
echo "Key does not exist!";
}
18.array_reverse() array_reverse(array,preserve) preserve 可選。規定是否保留原始數組的鍵名。可能的值:true 和 false。
<?php
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
print_r(array_reverse($a)); //輸出:Array ( [c] => Horse [b] => Cat [a] => Dog )
?>
19.end()
end() 函數將數組內部指針指向最后一個元素,并返回該元素的值(如果成功)。
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) . "<br />";
echo end($people);
?>
輸出:
Peter
Cleveland
20.current()
current() 函數返回數組中的當前元素(單元)。
每個數組中都有一個內部的指針指向它“當前的”元素,初始指向插入到數組中的第一個元素。
21.sort asort arsort ksort krsort
(1)sort()
sort() 函數按升序對給定數組的值排序。注釋:本函數為數組中的單元賦予新的鍵名。原有的鍵名將被刪除。
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
sort($my_array);
print_r($my_array);// 輸出:Array ( [0] => Cat [1] => Dog [2] => Horse )
?>
(2)asort()
asort() 函數對數組進行排序并保持索引關系。主要用于對那些單元順序很重要的結合數組進行排序。
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
asort($my_array);
print_r($my_array); //輸出:Array ( [b] => Cat [a] => Dog [c] => Horse )
?>
(3)arsort() 函數對數組進行逆向排序并保持索引關系。主要用于對那些單元順序很重要的結合數組進行排序。
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
arsort($my_array);
print_r($my_array); //輸出:Array ( [c] => Horse [a] => Dog [b] => Cat )
?>
(4)ksort()
ksort() 函數按照鍵名對數組排序,為數組值保留原來的鍵。
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
ksort($my_array);
print_r($my_array); //輸出:Array ( [a] => Dog [b] => Cat [c] => Horse )
?>
(5)ksort() 函數按照鍵名對數組排序,為數組值保留原來的鍵。
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
krsort($my_array);
print_r($my_array); //輸出:Array ( [c] => Horse [b] => Cat [a] => Dog )
?>
---------------------------------------------------------------------------------------------------------------------------------------
三.字符串函數
1.strpos()
strpos() 函數返回字符串在另一個字符串中第一次出現的位置。如果成功,則返回位置,否則返回 false。
<?php
echo strpos("Hello world!","wo"); //輸出:6
?>
2.strrpos()
strrpos() 函數查找字符串在另一個字符串中最后一次出現的位置。如果成功,則返回位置,否則返回 false。
<?php
echo strpos("Hello world!","wo"); //輸出:6
?>
3.strlen()
strlen() 函數返回字符串的長度。
<?php
echo strlen("Hello world!"); //輸出:12
?>
4.substr() 截取函數substr(string,start,length)
substr() 函數返回字符串的一部分。
具體用法看例子:
<?php
$str = 'abcdefg';
echo substr($str,0).'<br />'; //輸出:abcdefg 解釋:a的下標為0,沒有第三個參數,所以從a開始截取,一直截取最后
echo substr($str,3).'<br />'; //輸出:defg 解釋:d的下標為3,沒有第三個參數,所以從d開始截取,一直截取最后
echo substr($str,1,4).'<br />'; //輸出:bcde 解釋:b的下表為1,e的下標為4,所以從b開始,截取到e
echo substr($str,-2).'<br />'; //輸出:fg 解釋:g的位置為-1,f的位置為-2,沒有第三個參數,所以從f開始截取,一直截取到最后
echo substr($str,-5,-1).'<br />'; //輸出:cdef 解釋:c的位置為-5,g的位置為-1,截取是從-5的位置開始算,在-1之前的那個位置結束,也就是不包括-1的位置。
echo substr($str,1,-2).'<br />'; //輸出:bcde 解釋:b的位置為-1,f的位置為-2,b開始截取,截取到f前面的那個止(即不包括-2的這個位置)
?>
5.strstr() strstr(string,search)
strstr() 函數搜索一個字符串在另一個字符串中的第一次出現。該函數返回字符串的其余部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。
<?php
echo strstr("Hello world!","o"); //輸出:o world!
?>
該函數對大小寫敏感。如需進行大小寫不敏感的搜索,請使用 stristr()。
6.trim()
trim() 函數從字符串的兩端刪除空白字符和其他預定義字符。
<?php
$str = " Hello World! ";
echo $str.'<br />';
echo trim($str).'<br />';
//查看源碼可以看到: Hello World! <br />Hello World!<br />
?>
7.strtoupper()
strtoupper() 函數把字符串轉換為大寫。
<?php
echo strtoupper("Hello WORLD!"); //輸出:HELLO WORLD!
?>
8.strtolower
strtolower() 函數把字符串轉換為小寫。
<?php
echo strtolower("Hello WORLD!"); //輸出:hello world!
?>
9.ucfirst()
ucfirst() 函數把字符串中的首字符轉換為大寫。
<?php
echo ucfirst("hello world"); //輸出:Hello world!
?>
10.ucwords()
ucwords() 函數把字符串中每個單詞的首字符轉換為大寫。
<?php
echo ucfirst("hello world"); //輸出:Hello World!
?>
11.strrev()
strrev() 函數反轉字符串。
<?php
echo strrev("Hello World!"); //輸出:!dlroW olleH
?>
12.round() ceil() intval() floor() 的用法
round() 函數對浮點數進行四舍五入。
ceil() 進一法取整
intval() 獲取變量的整數值
<?php
echo round(0.60); //輸出:1
echo round(0.49); //輸出:0
echo ceil(3.33); //輸出:4
echo ceil(3.9); //輸出:4
echo intval(3.33);//輸出:3
echo intval(3.9); //輸出:3
?>
floor() PHP Math 函數
floor() 函數向下舍入為最接近的整數。返回不大于 x 的下一個整數,將 x 的小數部分舍去取整。floor() 返回的類型仍然是 float,因為 float 值的范圍通常比 integer 要大。
具體看例子:
<?php
echo(floor(0.60)); //0
echo(floor(0.40)); //0
echo(floor(5)); //5
echo(floor(5.1)); //5
echo(floor(-5.1)); //-6
echo(floor(-5.9)) //-6
?>
13.implode()
implode() 函數把數組元素組合為一個字符串。
<?php
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr); //輸出:Hello World! Beautiful Day!
?>
14.explode()
explode() 函數把字符串分割為數組。
<?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>
輸出:
Array(
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)
15.str_pad()
str_pad() 函數把字符串填充為指定的長度。 str_pad(string,length,pad_string,pad_type)
string 必需。規定要填充的字符串。
length 必需。規定新字符串的長度。如果該值小于原始字符串的長度,則不進行任何操作。
pad_string 可選。規定供填充使用的字符串。默認是空白。
pad_type 可選。規定填充字符串的那邊。可能的值:
STR_PAD_BOTH - 填充到字符串的兩頭。如果不是偶數,則右側獲得額外的填充。
STR_PAD_LEFT - 填充到字符串的左側。
STR_PAD_RIGHT - 填充到字符串的右側。這是默認的。
<?php
$str = "Hello World";
echo str_pad($str,20,"."); //輸出:Hello World.........
?>
<?php
$str = "Hello World";
echo str_pad($str,20,".",STR_PAD_LEFT); //輸出:.........Hello World
?>
16.strip_tags() strip_tags(string,allow) string 必需。規定要檢查的字符串。allow 可選。規定允許的標簽。這些標簽不會被刪除。
strip_tags() 函數剝去 HTML、XML 以及 PHP 的標簽。
<?php
echo strip_tags("Hello <b><i>world!</i></b>","<b>"); //輸出:Hello world!
?>
17.htmlspecialchars() htmlspecialchars(string,quotestyle,character-set)
htmlspecialchars() 函數把一些預定義的字符轉換為 HTML 實體。
預定義的字符是:
& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小于) 成為 <
> (大于) 成為 >
string 必需。規定要轉換的字符串。
quotestyle 可選。規定如何編碼單引號和雙引號。
ENT_COMPAT - 默認。僅編碼雙引號。
ENT_QUOTES - 編碼雙引號和單引號。
ENT_NOQUOTES - 不編碼任何引號。
character-set 可選。字符串值,規定要使用的字符集。
<html>
<body>
<?php
$str = "John & 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>
瀏覽器輸出:
John & 'Adams'
John & 'Adams'
John & 'Adams'
如果在瀏覽器中查看源代碼,會看到這些 HTML:
<html>
<body>
John & 'Adams'<br />
John & 'Adams'<br />
John & 'Adams'
</body>
</html>
18.htmlspecialchars_decode() htmlspecialchars_decode() 函數是 htmlspecialchars() 函數的反函數。
htmlspecialchars_decode() 函數把一些預定義的 HTML 實體轉換為字符。
會被解碼的 HTML 實體是:
& 解碼成 & (和號)
" 解碼成 " (雙引號)
' 解碼成 ' (單引號)
< 解碼成 < (小于)
> 解碼成 > (大于)
<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars_decode($str);
?>
瀏覽器輸出:This is some bold text.
如果在瀏覽器中查看源代碼,會看到這些 HTML:
<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>
-------------------------------------------------------------------------------------------------------------------------------------
四 Date / Time 函數
1.time()
time() 函數返回當前時間的 Unix 時間戳。
<?php
echo time(); //輸出:1424937345
echo date('Y-m-d H:i:s',time());//輸出:2015-02-26 15:55:32 // date()函數將時間戳轉換為日期格式
?>
2.mktime() 語法:mktime(hour,minute,second,month,day,year,is_dst)
mktime() 函數返回一個日期的 Unix 時間戳。
<?php
echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); //輸出:Jan-05-2002
echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); //輸出:Feb-01-2002
echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); //輸出:Jan-01-2001
echo(date("M-d-Y",mktime(0,0,0,1,1,99))); //輸出:Jan-01-1999
?>
3.microtime()
microtime() 函數返回當前 Unix 時間戳和微秒數。
<?php
echo microtime(); //輸出:0.79456400 1424937755
?>
4.strtotime()
strtotime() 函數將任何英文文本的日期時間描述解析為 Unix 時間戳。
<?php
echo(strtotime("now"));
echo(strtotime("3 October 2005"));
echo(strtotime("+5 hours"));
echo(strtotime("+1 week"));
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));
echo(strtotime("next Monday"));
echo(strtotime("last Sunday"));
?>
輸出:
1138614504
1128290400
1138632504
1139219304
1139503709
1139180400
1138489200
5.date()
date() 函數格式化一個本地時間/日期。
<?php
echo date('Y-m-d H:i:s',time());//輸出:2015-02-26 15:55:32
?>
6.date_default_timezone_set() 語法:date_default_timezone_set(timezone)
date_default_timezone_set() 函數設置用在腳本中所有日期/時間函數的默認時區。
設置中國時區
date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亞洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'為“亞洲/重慶”
date_default_timezone_set('Asia/Harbin');//其中'Asia/Harbin'為"亞洲/哈爾濱"
date_default_timezone_set('PRC');//其中PRC為“中華人民共和國”
7.date_default_timezone_get()
date_default_timezone_get() 函數返回腳本中所有日期時間函數所使用的默認時區。
<?php
echo date_default_timezone_get(); //輸出:Asia/Chongqing
?
8.usleep()
usleep() 函數延遲代碼執行若干微秒。
<?php
echo date('h:i:s') . "<br />"; //開始執行程序
usleep(10000000); //延遲10秒
echo date('h:i:s'); //再次開始執行程序
?>
輸出:
04:28:24
04:28:34
9.就時間戳轉換為時間和將時間轉換為時間戳
(1)UNIX時間戳轉換為日期用函數: date()
看例子:
<?php
echo date("Y-m-d H:i:s", time());
echo date("Y-m-d H:i:s","1424937345");
?>
2. 日期轉換為UNIX時間戳用函數:strtotime()
例子:
<?php
echo strtotime('2010-03-24 08:15:42');
?>
10. 開發案例
/*
現在要實現這樣功能:
如銀行信用卡還款通知:當程序掃描到用戶需要信用卡還款時,就發送短信通知用戶。
但為了防止打擾到用戶,只能在白天9:00-18:00之間發送短信,怎么實現這個功能呢?
*/
<?php
$y=date("Y",time());
$m=date("m",time());
$d=date("d",time());
$start_time = mktime(9, 0, 0, $m, $d ,$y);
$end_time = mktime(18, 0, 0, $m, $d ,$y);
$time = time();
if($time >= $start_time && $time <= $end_time){
//send message... 寫發送短信的代碼
}
?>
-------------------------------------------------------------------------------------------------------------------------------------
五 其他函數
1.error_reporting(E_ALL);
報告所有錯誤
2.file_exists(path)
file_exists() 函數檢查文件或目錄是否存在。如果指定的文件或目錄存在則返回 true,否則返回 false。
<?php
echo file_exists("test.txt");
?>
3.number_format()
number_format() 函數通過千位分組來格式化數字。
<?php
echo number_format("1000000"); //1,000,000
echo number_format("1000000",2); //1,000,000.00
echo number_format("1000000",2,",","."); //1.000.000,00
?>
4.preg_replace()
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement進行替換。
這個例子剝離多余的空白字符
<?php
$str = 'foo o';
$str = preg_replace('/ss+/', ' ', $str);
// 將會改變為'foo o'
echo $str;
?>
5.dirname()
dirname() 函數返回路徑中的目錄部分。
<?php
echo dirname("c:/testweb/home.php"); //輸出:c:/testweb
echo dirname("/testweb/home.php"); //輸出:testweb
?>
6.__FILE__
__FILE__ 返回當前 路徑+文件名
7.dirname(__FILE__)
當前php程序的就是完整路徑(路徑+文件名)
<?php
$the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name; //返回/home/data/demo/test/a.php
echo $the_dir; //返回/home/data/demo/test
?>
簡單地說:
__FILE__ 返回當前 路徑+文件名
dirname(__FILE__) 返回當前文件路徑的 路徑部分
dirname(dirname(__FILE__));得到的是文件上一層目錄名(不含最后一個“/”號)
例如,當前文件是 /home/data/demo/test.php ,則
__FILE__ 得到的就是完整路徑 即 /home/data/demo/test.php ,而
dirname(__FILE__)得到路徑部分 即 /home/data/demo (后面沒有“/”號)
8.$_SERVER['SCRIPT_FILENAME']
PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別:
通常情況下,PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 都會返回 PHP 文件的完整路徑(絕對路徑)與文件名:
二者的差別是:$_SERVER['SCRIPT_FILENAME'] 反映的是當前執行程序的絕對路徑及文件名;__FILE__ 反映的是原始文件(被包含文件)的絕對路徑及文件名
9.$_SERVER['HTTP_HOST']和$_SERVER['PHP_SELF']
假如命令行的地址是:http://www.baidu.com/index.php
那么:
$_SERVER['HTTP_HOST']=='www.baidu.com' //一個是主機地址
$_SERVER['PHP_SELF']=='/index.php' //腳本文件的絕對路徑
10.error_log()
error_log() 函數向服務器錯誤記錄、文件或遠程目標發送一個錯誤。若成功,返回 true,否則返回 false。
<?php
$test=2;
if ($test>1)
{
error_log("A custom error has been triggered",
1,"[email protected]","From: [email protected]");
}
?>
輸出:
A custom error has been triggered
11.ini_set('display_errors', '1');
PHP ini_set用來設置php.ini的值,在函數執行的時候生效,腳本結束后,設置失效。無需打開php.ini文件,就能修改配置,對于虛擬空間來說,很方便。
函數格式:string ini_set(string $varname, string $newvalue)
常見的設置:
@ ini_set('memory_limit', '64M');
'menory_limit':設定一個腳本所能夠申請到的最大內存字節數,這有利于寫的不好的腳本消耗服務器上的可用內存。@符號代表不輸出錯誤。
@ini_set('display_errors', 1);
‘display_errors':設置錯誤信息的類別。
ini_set("display_errors","On"); //顯示所有錯誤信息
ini_set("display_errors","Off"); //屏蔽所有錯誤信息
這里要說明的是,通常服務器配置文件中,是屏蔽notice錯誤,只顯示error錯誤,如果是這樣的話,你打開錯誤顯示,也不會顯示notice錯誤
12.json_decode()和json_encode()
先看json_encode()
json_decode — 對 JSON 格式的字符串進行編碼 接受一個 JSON 格式的字符串并且把它轉換為 PHP 變量
json_decode($data)輸出的是對象,而json_decode("$data",true)是生成PHP關聯數組.
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
上例將輸出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
在看json_decode()
json_encode — 對變量進行 JSON 編碼
該函數只能接受 UTF-8 編碼的數據
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
以上例程會輸出:
{"a":1,"b":2,"c":3,"d":4,"e":5}
看一個開發案例(刪除案例):
(1)放置刪除按鈕:
<body>
<a href="javascript:del(<?=$info->c_id?>,<?=$val->c_id?>)">刪除</a>
</body>
(2)ajax指定處理器并傳遞數據
<script>
function del(cid,b_id){
if(confirm("您確定要刪除嗎")){
$.ajax({
type:"get",
dataType:"json",
url:"/demo/del",
data:{
"c_id":cid,
"b_id":b_id
},
success: function (msg) {
if(msg.rs == "success"){
alert(msg.info);
window.location.reload();
}else{
alert(msg.info);
}
}
});
}
}
</script>
(3)處理方法
處理方法就不寫了,處理的結果返回給$res。
if($res){
die(json_encode(array("rs"=>'success',"info"=>"刪除成功"))); //json_encode()對變量進行 JSON 編碼
}else{
die(json_encode(array("rs"=>'fail',"info"=>'刪除失敗')));
}
13.urlencode()和urldecode()
他們是用來解決網頁URL編碼解碼問題,為的是讓包含中文的URL可以使用。
<?php
$str = '我';
$str1 = urlencode($str);
$str2 = urldecode($str1);
echo $str1; // 輸出:%e6%88%91 //編碼
echo $str2; // 輸出:我 //解碼
?>
14.sprintf()
sprintf() 函數把格式化的字符串寫入一個變量中。
<?php
$transAmt=10000000;
$transAmt = sprintf('%.2f',$transAmt);
echo $transAmt; //輸出:10000000.00
?>
15.fopen() fwrite() fclose的用法
先看個例子:
<?php
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '測試';
$handle = fopen($paths,'w+');
fwrite($handle, $content);
fclose($handle);
?>
運行一次,不過在$path路徑下不存在a.txt文件,則會創建a.txt文件,w+是會把文件里面內容清空,重新寫入。每次運行,都會清空原來的a.txt里面的數據,重新寫入。
如果要追加的方法,即里面內容不清楚,繼續添加,可用a,即,$handle = fopen($paths,'a');
"r" 只讀方式打開,將文件指針指向文件頭。
"r+" 讀寫方式打開,將文件指針指向文件頭。
"w" 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
"w+" 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
"a" 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
"a+" 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
"x"
創建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。
這和給底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。
此選項被 PHP 4.3.2 以及以后的版本所支持,僅能用于本地文件。
"x+"
創建并以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。
這和給底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。
此選項被 PHP 4.3.2 以及以后的版本所支持,僅能用于本地文件。
12.file_put_contents()和file_get_contents()的用法
file_put_contents() 函數把一個字符串寫入文件中。與依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。該函數將返回寫入到文件內數據的字節數
<?php
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '測試';
//$handle = fopen($paths,'w+');
//fwrite($handle, $content);
//fclose($handle);
echo file_put_contents($paths,$content);//輸出:30
$arr = array('a'=>1,'b'=>2);
file_put_contents($paths,var_export($arr,true));
?>
file_get_contents() 函數把整個文件讀入一個字符串中。
<?php
header('Content-type:text/html;charset=utf-8');
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '測試';
file_put_contents($paths,$content);
$str = file_get_contents($paths);
echo $str; //輸出:測試
?>
16.flock()
flock() 函數鎖定或釋放文件。若成功,則返回 true。若失敗,則返回 false。
flock(file,lock,block)
file 必需。規定要鎖定或釋放的已打開的文件。flock() 操作的 file 必須是一個已經打開的文件指針。
lock 必需。規定要使用哪種鎖定類型。
block 可選。若設置為 1 或 true,則當進行鎖定時阻擋其他進程。
要取得共享鎖定(讀取的程序),將 lock 設為 LOCK_SH(PHP 4.0.1 以前的版本設置為 1)。
要取得獨占鎖定(寫入的程序),將 lock 設為 LOCK_EX(PHP 4.0.1 以前的版本中設置為 2)。
要釋放鎖定(無論共享或獨占),將 lock 設為 LOCK_UN(PHP 4.0.1 以前的版本中設置為 3)。
如果不希望 flock() 在鎖定時堵塞,則給 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中設置為 4)。
<?php
$file = fopen("test.txt","w+"); //打開
// 排它性的鎖定
if (flock($file,LOCK_EX)){ //鎖定后
fwrite($file,"Write something"); //寫入內容
// release lock
flock($file,LOCK_UN); //然后解鎖
}else{
echo "Error locking file!";
}
fclose($file); //關閉
?>
17.unlink() unlink(filename,context)
unlink() 函數刪除文件。若成功,則返回 true,失敗則返回 false。
<?php
$file = "test.txt";
if (!unlink($file)){
echo ("操作錯誤");
}else{
echo ("刪除成功");
}
?>
18.unset()
unset -- 釋放給定的變量 在 PHP 4 中,unset() 不再是一個真正的函數:它現在是一個語句。這樣就沒有了返回值,試圖獲取 unset() 的返回值將導致解析錯誤。
<?php
$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
unset($arr['b']);
echo '<pre>';print_r($arr);
?>
輸出:
Array
(
[a] => 1
[c] => 3
)
19.var_export()
var_export — 輸出或返回一個變量的字符串表示
此函數返回關于傳遞給該函數的變量的結構信息,它和 var_dump() 類似,不同的是其返回的表示是合法的 PHP 代碼。您可以通過將函數的第二個參數設置為 TRUE,從而返回變量的表示。
<?php
$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
var_dump($arr); //輸出: array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }
var_export($arr); //輸出: array ( 'a' => 1, 'b' => 2, 'c' => 3, )
$v = var_export($arr,TRUE); //第二個參數設置為 TRUE,從而返回變量的表示
echo $v; //輸出 array ( 'a' => 1, 'b' => 2, 'c' => 3, )
?>
20.serialize()和unserialize()
serialize — 產生一個可存儲的值的表示 serialize() 返回字符串,此字符串包含了表示 value 的字節流,可以存儲于任何地方。 這有利于存儲或傳遞 PHP 的值,同時不丟失其類型和結構。
unserialize — 從已存儲的表示中創建 PHP 的值。 想要將已序列化的字符串變回 PHP 的值,可使用 unserialize()。
具體看例子:
<?php
$str = 'abcdefg';
$str1 = serialize($str);
$str2 = unserialize($str1);
echo $str1; //輸出:s:7:"abcdefg";
echo $str2; //輸出:abcdefg
$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
$string = serialize($arr);
$arr2 = unserialize($string);
echo $string; //輸出:a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}
print_r($arr2); //輸出:Array ( [a] => 1 [b] => 2 [c] => 3 )
?>
21.rand()
rand() 函數返回隨機整數。
<?php
echo rand(0,100); // 輸出0-100的隨機整數
?>
22.preg_match()
http://developer.51cto.com/art/200911/165362.htm
$num = $this->input->post('buy_num');
$preg = '/^[1-9][0-9]*$/';
if(!preg_match($preg, $ct_id) || !preg_match($preg, $num)){
echo '<script type="text/javascript">alert("參數錯誤!");history.back();</script>';
die();
}
23.str_replace()
str_replace() 函數使用一個字符串替換字符串中的另一些字符。
<?php
echo str_replace("world","John","Hello world!"); //輸出:Hello John!
?>
<?php
$str = '123456789';
$new_str = str_replace("'","",$str);
echo $new_str;//輸出123456789 //將' 替換為空
?>
24.preg_match()
在php中preg_match()函數是用來執行正則表達式的一個常用的函數
例子1:
如在開發中要判斷表達提交過來的手機號碼是否符合我們的要求,可用他來判斷
<?php
if(!preg_match("/^1[3578][0-9]{9}$/", $_POST['phone_tel'])){
$this->show_warning('phone_error');
return;
}
?>
例子2:
判斷是否為郵箱
if(!preg_match('/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/', $_POST['email'])){
echo "<script>alert('郵箱格式錯誤');location.href='/xxx'</script>";
}
25.curl_init() url_init -- 初始化一個CURL會話
curl_init()函數將初始化一個新的會話,返回一個CURL句柄供curl_setopt(), curl_exec(),和 curl_close() 函數使用。如果可選參數被提供,那么CURLOPT_URL選項將被設置成這個參數的值。你可以使用curl_setopt()函數人工設置。
<?php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "網站地址");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
?>
<?php
public function request_by_curl($remote_server, $post_array)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Errno'.curl_error($ch);//捕抓異常
exit;
//print_r(curl_getinfo($ch));
}
curl_close($ch);
return $result;
}
?>
PHP編程 鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。