PHP常用函數(shù)和常見(jiàn)疑難問(wèn)題解答
首先介紹下比較簡(jiǎn)單但必不可少且實(shí)用的知識(shí),可以當(dāng)手冊(cè)查詢,適合像我一樣的新手看。
PHP常用庫(kù)函數(shù)介紹
一、PHP字符串操作常用函數(shù)
1.確定字符串長(zhǎng)度
int strlen(string str)
2.比較兩個(gè)字符串
a. strcmp函數(shù)對(duì)兩個(gè)字符串進(jìn)行二進(jìn)制安全的比較,并區(qū)分大小寫(xiě)
int strcmp(string str1,string str2)
b. 以不區(qū)分大小寫(xiě)的方式比較兩個(gè)字符串
int strcasecmp(string str1,string str2)
3.求兩個(gè)字符串相同部分
int strspn(string str1,string str2)
4.求兩個(gè)字符串的不同部分
5.int strcspn(string str1,string str2)
6.處理字符串大小寫(xiě)
a. 將字符串全部轉(zhuǎn)換為小寫(xiě)
string strtolower(string str)
b. 將字符串全部轉(zhuǎn)化為大寫(xiě)
string strtoupper(string str)
c. 將字符串第一個(gè)字符大寫(xiě)
string ucfirst(string str)
d. 把字符串中每個(gè)單詞的首字符轉(zhuǎn)換為大寫(xiě)
string ucwords(string str)
7.字符串與HTML相互轉(zhuǎn)換
a. 將換行符轉(zhuǎn)換為HTML終止標(biāo)記
string bl2br(string str)
b. 將特殊字符轉(zhuǎn)換wieldHTML等價(jià)形式(不解析格式)
string htmlentities(string str[,int quote_style[,int charset]])
string htmlspecialchars(string str[,int quote_style[,string charset]])
c. 將HTML轉(zhuǎn)換為純文本,移除所有的php和html標(biāo)簽
string strip_tags(string str[,string allowable_tags])
d. 將文本轉(zhuǎn)換為HTML等價(jià)形式
array get_html_translaction_table(int table[,int quote_style])
e. 創(chuàng)建一個(gè)自定義的轉(zhuǎn)換清單
string strtr(string str,array replacements)
8.正則表達(dá)式函數(shù)的替代函數(shù)
a. strtok函數(shù)根據(jù)預(yù)定義的字符串列表來(lái)解析字符串
string strtok(string str,string tokens):返回直到遇到tokens之前的所有內(nèi)容
b. 根據(jù)預(yù)定義的定界符分析字符串
array explode(string separator,string str[,int limit]):分割字符串
c. 將數(shù)組轉(zhuǎn)換為字符串
string implode(string delimiter, array array)
d. 找到字符串的第一次出現(xiàn)
int strpos(string str,string substr[,int offset])
e. 找到字符串的最后一次出現(xiàn)
int strrpos(string str,char substr[,offset])
f. 用另外一個(gè)字符串替代字符串的所有實(shí)例
mixed str_replace(string occurrence,mixed replacement,mixed str[,int count])
g. 獲取字符串的一部分strstr返回字符串中預(yù)定義字符串第一次出現(xiàn)開(kāi)始的剩余部分
string strstr(string str,string occurrence)
h. 根據(jù)預(yù)定義的偏移返回字符串一部分
string substr(string str,int start[,ing length]):start可為負(fù)數(shù),表示倒數(shù)第幾開(kāi)始
i. 確定字符串出現(xiàn)的頻率
int substr_count(string str,string substring)
j. 用另一個(gè)字符串替換一個(gè)字符串的一部分
string substr_replace(string str,string replacement,int start[,int length])
9.填充和剔除字符串
a. 從字符串開(kāi)始出裁剪字符
string ltrim(string str[,string charliset])
b. 從字符串結(jié)尾裁剪字符
string rtrim(string str[,string charliset])
c. 從字符串兩端裁剪字符
string trim(string str[,string charliset])
d. 填充字符串
string str_pad(string str,int length[,string pad_string[,int pad_type]])
10.字符和單詞計(jì)數(shù)
a. 字符串中字符計(jì)數(shù)
mixed count_chars(string str[,mode])
b. 字符串中單詞總數(shù)計(jì)數(shù)
mixed str_word_count(string str[,int format])
二、PHP Web開(kāi)發(fā)中常用的三個(gè)表單驗(yàn)證函數(shù)
(1)isset();——適合于檢測(cè)是否存在這個(gè)參數(shù)。用來(lái)避免引用不存在的變量
定義和作用范圍:用于測(cè)試一個(gè)變量是否具有值(包括0,F(xiàn)ALSE,或者一個(gè)空字串都返回true,但不能是NULL),即:“http://localhost/?fo=”也是可以通過(guò)檢測(cè),因此不適用。但如果是“http://localhost/”參數(shù)中并不含fo參數(shù),就可以用isset來(lái)檢測(cè),此時(shí)isset($_GET['fo'])返回false
不適用于:該函數(shù)不適合于驗(yàn)證html表單中的文本的有效方式。要檢查用戶輸入文本是否有效,可以用empty();
(2)empty();——最好用的一個(gè)函數(shù),用于檢查變量是否具有空值
定義和作用范圍:用于檢查變量是否具有空值:包括:空字串,0,null 或false,這些都返回false,即:“http://localhost/?fo=”或“http://localhost/?fo=0”時(shí),empty檢測(cè)出來(lái)的結(jié)果都是ture
不適用范圍:不適用于檢測(cè)可為0的參數(shù)
(3)is_numeric();——檢查變量是否為數(shù)字
定義和作用范圍:檢查變量是否為數(shù)字,只適用于檢測(cè)數(shù)字
不適用范圍:但假如參數(shù)名不存在,會(huì)出錯(cuò),因此不適合于第一層檢測(cè)
另外還有一個(gè)好用的驗(yàn)證函數(shù)是checkdate(month,day,$year),用來(lái)確認(rèn)某個(gè)日期是否存在或在過(guò)去是否存在
綜合示例:
這是表單:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>表單驗(yàn)證示例</title>
</head>
<body>
</body>
<p>
<a href="?fo=Jack">傳有效值</a> <a href="?fo=">傳空值</a> <a href="?fo=0">傳0值</a>
<br /><br />
<a href="?sex=m">性別:男</a> <a href="?sex=f">性別:女</a>
<br /><br />
<a href="/">清空</a>
<br /><br />
<input type="text" value="<?php echo $_GET['fo']!=''?$_GET['fo']:'';?>" size="155" />
</p>
</html>[code]
這是驗(yàn)證
[code]<?php
ini_set("display_errors",1);
//ini_set("error_reporting",E_ALL); print_r
error_reporting(E_ALL);
$a=NULL;
if(isset($a))echo '變量$a的isset為真';
echo '<h2>isset的情形:</h2>';
if(isset($_GET['fo'])){
echo '變量\'fo\'的isset為真,變量可用';
}else{
echo '變量\'fo\'的isset為假,無(wú)變量設(shè)置';
}
echo '<h2>empty的情形:</h2>';
if(empty($_GET['fo'])){
echo '變量\'fo\'的empty為真,即空值或無(wú)效值';
}else{
echo '變量\'fo\'的empty為假,有值';
}
echo '<h2>is_numeric的情形:</h2>';
if(is_numeric($_GET['fo'])){ //在參數(shù)中無(wú)fo參數(shù)時(shí),則出錯(cuò)。
echo '變量\'fo\'的is_numeric為真,是數(shù)字';
}else{
echo '變量\'fo\'的is_numeric為假,不是數(shù)字';
}
echo "<h2>\$_GET['fo']=''的情形:</h2>";
if($_GET['fo']==''){ //在參數(shù)中無(wú)fo參數(shù)時(shí),則出錯(cuò)。
echo 'fo無(wú)值,空的字符串';
}elseif($_GET['fo']!=''){
echo 'fo有值,不為\'\'.';
}
echo "<h2>\$_GET['sex']='m'的情形:</h2>";
if($_GET['sex']=='m'){ //當(dāng)參數(shù)中無(wú)sex變量時(shí)就會(huì)出錯(cuò)。
echo '男的';
}elseif($_GET['sex']=='f'){
echo '女的';
}
?>
三、其他常用庫(kù)函數(shù)
(1)ini_set ini_get——可操作配置參數(shù)列表
為了使自己的程序在不同的平臺(tái)中擁有更好的兼容性,很多時(shí)候我們都要獲取當(dāng)前Php的運(yùn)行環(huán)境參數(shù)。
比如我們常用到的:
獲取 magic_quotes_gpc 狀態(tài),來(lái)決定當(dāng)表單提交時(shí)我們是否轉(zhuǎn)義(addslashes)數(shù)據(jù);
設(shè)定 max_execution_time 來(lái)延長(zhǎng)程序的執(zhí)行時(shí)間;
設(shè)定 error_reporting 使自己的項(xiàng)目在開(kāi)發(fā)與運(yùn)營(yíng)階段切換;
設(shè)定 memory_limit 加大內(nèi)存等等…
(2)ini_set(string varname, string newvalue ) : //設(shè)定環(huán)境配置的參數(shù)
ini_get(string varname) : //獲取環(huán)境配置的參數(shù)
PHP ini_set函數(shù)是設(shè)置選項(xiàng)中的值,在執(zhí)行函數(shù)后生效,腳本結(jié)束的時(shí)候,這個(gè)設(shè)置也失效。不是所有的選項(xiàng)都能被改函數(shù)設(shè)置的。具體那些值能夠設(shè)置,可以查看手冊(cè)中的列表
其實(shí)你把PHP ini_set函數(shù)和ini_get結(jié)合使的話,非常好。比如你想在配置文件里添加自己的包含文件路徑,但是你有沒(méi)有權(quán)限更改php.ini,那么你可以結(jié)合兩個(gè)函數(shù):
ini_set ( 'include_path' , ini_get ( 'include_path' ). ':/your_include_dir:' );
(3)chdir(dirname(__FILE__)); //切換到global.php所在目錄
(4)ob_start(‘ui_handler');//設(shè)置輸出緩沖區(qū)句柄為ui_handler,即系統(tǒng)首頁(yè)面為ui_handler函數(shù)所定義的內(nèi)容
(5)int intval(mixed var, int [base]);
本函數(shù)可將變量轉(zhuǎn)成整數(shù)類型??墒÷缘膮?shù) base 是轉(zhuǎn)換的基底,默認(rèn)值為 10。轉(zhuǎn)換的變量 var 可以為數(shù)組或類之外的任何類型變量。
(6)error_reporting(report_level) 函數(shù)—— 設(shè)置 PHP 的報(bào)錯(cuò)級(jí)別并返回當(dāng)前級(jí)別
其中report_level可取值為0、1、2、4、8、16、32、……、4096、8191
例子:任意數(shù)目的以上選項(xiàng)都可以用“或”來(lái)連接(用 OR 或 |),這樣可以報(bào)告所有需要的各級(jí)別錯(cuò)誤。例如,下面的代碼關(guān)閉了用戶自定義的錯(cuò)誤和警告,執(zhí)行了某些操作,然后恢復(fù)到原始的報(bào)錯(cuò)級(jí)別:
//禁用錯(cuò)誤報(bào)告
error_reporting(0);
//報(bào)告運(yùn)行時(shí)錯(cuò)誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//報(bào)告所有錯(cuò)誤
error_reporting(E_ALL);
?>
常見(jiàn)疑難問(wèn)題解答
1、rand(min,max)與mt_rand(min,max)的區(qū)別如果沒(méi)有提供可選參數(shù) min 和 max,mt_rand() 返回 0 到 RAND_MAX 之間的偽隨機(jī)數(shù)。例如想要 5 到 15(包括 5 和 15)之間的隨機(jī)數(shù),用 mt_rand(5, 15)。
很多老的 libc 的隨機(jī)數(shù)發(fā)生器具有一些不確定和未知的特性而且很慢。PHP 的 rand() 函數(shù)默認(rèn)使用 libc 隨機(jī)數(shù)發(fā)生器。mt_rand() 函數(shù)是非正式用來(lái)替換它的。該函數(shù)用了 Mersenne Twister 中已知的特性作為隨機(jī)數(shù)發(fā)生器,它可以產(chǎn)生隨機(jī)數(shù)值的平均速度比 libc 提供的 rand() 快四倍。
2、PHP echo, print, print_r, printf, sprintf和var_dump函數(shù)的區(qū)別和使用
1) echo
echo() 實(shí)際上不是一個(gè)函數(shù),是php語(yǔ)句,因此您無(wú)需對(duì)其使用括號(hào)。不過(guò),如果您希望向 echo() 傳遞一個(gè)以上的參數(shù),那么使用括號(hào)會(huì)發(fā)生解析錯(cuò)誤。而且echo是返回void的,并不返回值,所以不能使用它來(lái)賦值。
例子:
echo "55nav"; // 55nav
echo ("55nav"); // 55nav
echo ("55nav","com"); //發(fā)生錯(cuò)誤,有括號(hào)不能傳遞多個(gè)參數(shù)
echo "55nav"," com"," is", " web"; // 不用括號(hào)的時(shí)候可以用逗號(hào)隔開(kāi)多個(gè)值, 會(huì)輸出 55nav com is web
echo "55nav is good web."; // 不管是否換行,最終顯示都是為一行 55nav is good web.
echo "$fistname com"; // 如果 $firstname = "55nav", 則會(huì)輸出 55nav com.
echo '$firstname com'; // 由于使用單引號(hào),所以不會(huì)輸出$firstname的值,而是輸出 $firstname com12
?>
2) print
print() 和 echo() 用法一樣,但是echo速度會(huì)比print快一點(diǎn)點(diǎn)。實(shí)際上它也不是一個(gè)函數(shù),因此您無(wú)需對(duì)其使用括號(hào)。不過(guò),如果您希望向print() 傳遞一個(gè)以上的參數(shù),那么使用括號(hào)會(huì)發(fā)生解析錯(cuò)誤。注意print總是返回1的,這個(gè)和echo不一樣,也就是可以使用print來(lái)賦值,不過(guò)沒(méi)有實(shí)際意 義。
例子:
echo $a; // $a的值是14
?>;
3) print_r 函數(shù)——即打印預(yù)定義變量的值
print_r函數(shù)打印關(guān)于變量的易于理解的信息。
語(yǔ)法:mixed print_r ( mixed $expression [, bool return ] )
如果變量是string , integer or float , 將會(huì)直接輸出其值,如果變量是一個(gè)數(shù)組,則會(huì)輸出一個(gè)格式化后的數(shù)組,便于閱讀,也就是有key和value對(duì)應(yīng)的那種格式。對(duì)于object對(duì)象類同。 print_r有兩個(gè)參數(shù),第一個(gè)是變量,第二個(gè)可設(shè)為true,如果設(shè)為true,則會(huì)返回字符串,否則返回布爾值TRUE。
例子:
<?php $a="55nav";
$c = print_r($a);
echo $c; // $c的值是TRUE
$c = print_r($a, ture);
echo $c; // $c的值是字符串55nav
?>
4) printf函數(shù)
printf函數(shù)返回一個(gè)格式化后的字符串。
語(yǔ)法:printf(format,arg1,arg2,arg++)
參數(shù) format 是轉(zhuǎn)換的格式,以百分比符號(hào) (“%”) 開(kāi)始到轉(zhuǎn)換字符結(jié)束。下面是可能的 format 值:
* %% – 返回百分比符號(hào)
* %b – 二進(jìn)制數(shù)
* %c – 依照 ASCII 值的字符
* %d – 帶符號(hào)十進(jìn)制數(shù)
* %e – 可續(xù)計(jì)數(shù)法(比如 1.5e+3)
* %u – 無(wú)符號(hào)十進(jìn)制數(shù)
* %f – 浮點(diǎn)數(shù)(local settings aware)
* %F – 浮點(diǎn)數(shù)(not local settings aware)
* %o – 八進(jìn)制數(shù)
* %s – 字符串
* %x – 十六進(jìn)制數(shù)(小寫(xiě)字母)
* %X – 十六進(jìn)制數(shù)(大寫(xiě)字母)
arg1, arg2, arg++ 等參數(shù)將插入到主字符串中的百分號(hào) (%) 符號(hào)處。該函數(shù)是逐步執(zhí)行的,在第一個(gè) % 符號(hào)中,插入 arg1,在第二個(gè) % 符號(hào)處,插入 arg2,依此類推。如果 % 符號(hào)多于 arg 參數(shù),則您必須使用占位符。占位符被插入 % 符號(hào)之后,由數(shù)字和 “\$” 組成。可使用數(shù)字指定顯示的參數(shù),詳情請(qǐng)看例子。
例子:
printf("My name is %2\$s %1\$s","55nav", "com"); // 在s前添加1\$或2\$.....表示后面的參數(shù)顯示的位置,此行顯示My name is com 55nav
?>
5) sprintf函數(shù)
此函數(shù)使用方法和printf一樣,唯一不同的就是該函數(shù)把格式化的字符串寫(xiě)寫(xiě)入一個(gè)變量中,而不是輸出來(lái)。
例子:
$out = sprintf("My name is %1\$s %2\$s","55nav", "com");
echo $out; //輸出 My name is 55nav com
?>
6) var_dump函數(shù)
功能: 輸出變量的內(nèi)容、類型或字符串的內(nèi)容、類型、長(zhǎng)度。常用來(lái)調(diào)試。
例子:
var_dump($a); //int(100)
$a=100.356;
var_dump($a); //float(100.356)
?>
- PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總
- PHP中的一些常用函數(shù)收集
- 非常實(shí)用的PHP常用函數(shù)匯總
- PHP 正則表達(dá)式常用函數(shù)
- ThinkPHP字符串函數(shù)及常用函數(shù)匯總
- 基于PHP中的常用函數(shù)回顧
- 基于php常用函數(shù)總結(jié)(數(shù)組,字符串,時(shí)間,文件操作)
- PHP5常用函數(shù)列表(分享)
- 基于PHP常用函數(shù)的用法詳解
- PHP 查找字符串常用函數(shù)介紹
- PHP中的MYSQL常用函數(shù)(php下操作數(shù)據(jù)庫(kù)必備)
- 收藏的PHP常用函數(shù) 推薦收藏保存
- PHP開(kāi)發(fā)過(guò)程中常用函數(shù)收藏
- PHP 正則表達(dá)式常用函數(shù)使用小結(jié)
- PHP 常用函數(shù)庫(kù)和一些實(shí)用小技巧
- PHP常用函數(shù)小技巧
- 繼續(xù)收藏一些PHP常用函數(shù)
- PHP常用函數(shù)總結(jié)(180多個(gè))
相關(guān)文章
Thinkphp3.2.3整合phpqrcode生成帶logo的二維碼
這篇文章主要為大家詳細(xì)介紹了Thinkphp3.2.3整合phpqrcode生成帶logo的二維碼的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-07-07PHP實(shí)現(xiàn)的CURL非阻塞調(diào)用類
這篇文章主要介紹了PHP實(shí)現(xiàn)的CURL非阻塞調(diào)用類,結(jié)合實(shí)例形式分析了php使用curl實(shí)現(xiàn)的非阻塞調(diào)用類具體定義與使用技巧,需要的朋友可以參考下2018-07-07PHP使用ajax的post方式下載excel文件簡(jiǎn)單示例
這篇文章主要介紹了PHP使用ajax的post方式下載excel文件,結(jié)合簡(jiǎn)單示例形式分析了php后端Excel文件下載及前端ajax交互相關(guān)操作技巧,需要的朋友可以參考下2019-08-08修改Zend引擎實(shí)現(xiàn)PHP源碼加密的原理及實(shí)踐
來(lái)源:phphot PHP文件的源碼都是明文,這對(duì)于某些商業(yè)用途來(lái)說(shuō),并不適合。 因此考慮使用加密的手段保護(hù)源碼。 實(shí)在不耐煩等待zend出編譯器,而且編譯和加密本質(zhì)上不是一回事兒。自己動(dòng)手、開(kāi)始修改。2008-04-04php購(gòu)物網(wǎng)站支付paypal使用方法
PayPal 快速、安全而又方便,是跨國(guó)交易的首選在線付款方式?,F(xiàn)在PayPal可以和國(guó)內(nèi)大部分信用卡關(guān)聯(lián),可以實(shí)現(xiàn)國(guó)人的跨國(guó)交易收支。2010-11-11php curl發(fā)起get與post網(wǎng)絡(luò)請(qǐng)求案例詳解
這篇文章主要介紹了php curl發(fā)起get與post網(wǎng)絡(luò)請(qǐng)求案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09