PHP面試常用知識(shí)大全
PHP是一種通用開源腳本語言。下面小編整理了PHP面試常用知識(shí)大全,希望對(duì)大家有幫助!
1、php時(shí)間處理
a、獲取前一天 echo date(‘Y-m-d H:i:s’, strtotime(“-1 day”))
b、某個(gè)時(shí)間的前一天
$date = new DateTime(now());
$date->add(new DateInterval(P10D));
$date->sub(new DateInterval(PT1440M));
2、字符串翻轉(zhuǎn) strrev
3、mysql關(guān)于時(shí)間的函數(shù) now() month() year day dayofweek()
4、截取中文無亂碼的`方法
5、客戶端、服務(wù)器變量
$_SERVER[‘remote_addr’] $_SERVER[’SERVER_ADDR’]
5.1 是否為代理
5.2判斷是否為ajax請(qǐng)求
isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
6、session設(shè)置過期時(shí)間
session_set_cookie_params(24*3600);
7、常用排序函數(shù)
sort rsort ksort krsort natsort
8、字符串的處理,常用數(shù)組相關(guān)
explode implode
9、常用的html標(biāo)簽處理函數(shù)
htmlentities 標(biāo)簽轉(zhuǎn)換為"等
html_entity_decode 轉(zhuǎn)換回來
addslashes
閱讀安全那一章節(jié)
9.2 入數(shù)據(jù)庫前的處理
mysql_real_escape_string();
10、內(nèi)存相關(guān)函數(shù)
memory_get_usage()
memory_get_peak_usage()
memory_limit限制內(nèi)存使用
11、獲取客戶端ip,要考慮代理
if($_SERVER[‘http_x_forwarded_for’] != ‘’){
$clientIp = !empty($_SERVER[‘REMOTE_ADDR’]) ? $_SERVER[‘REMOTE_ADDR’] : !empty($_ENV[‘REMOTE_ADDR’]) ? $_ENV[‘REMOTE_ADDR’] : ‘unknown’;
}
12、驗(yàn)證電子郵件
echo preg_match(‘/^[w-.]+@[w-.]+[.w+]+$/’, $email);
13、文件擴(kuò)展名
parse_url PHP_URL_SCHEMAPHP_URL_HOSTPORTPATHQUERYFRAGEMENT
pathinfo basenameextensionfilenamedirname
basename 正則
14、strrchr(str, $delimiter)
HTTP常用知識(shí)點(diǎn)
15、http協(xié)議常用code
16、http1.1與http1.0的區(qū)別
增加了長連接以及復(fù)用鏈接的tcp技能,增加了host(虛擬), cache_control,
16.2 http請(qǐng)求頭信息
host,url,method,accept_language,content_length,user_agent,code,cache_control,tag,expire,server
17、enctype=‘multipart/form-data’
18、setcookie(name,value,expire,path,domain)
19、時(shí)區(qū)設(shè)置 date_default_timezone_set(‘Asia/shanghai’)
或者php.ini中修改date.time_zone
20、查看php.ini的位置
phpinfo() | grep php.ini
21、slowlog在php-fpm.ini中設(shè)置
request_slowlog_timeout=1s
slowlog=/path/to/slowlog.log
22、魔術(shù)方法
__SET, __GET, __CALL, __toString, __construct, __destruct, __set, __isset, __unset, __autoload, __clone
23、static靜態(tài)綁定
24、安全模式對(duì)系統(tǒng)函數(shù)的影響
之所以有安全模式,是為了試圖去解決共享web服務(wù)器問題而產(chǎn)生的,避免注入腳本去執(zhí)行腳本等。但即使禁止了php腳本,
攻擊人員仍可以使用perl腳本,所以從5.4版本起被廢除。
只要影響系統(tǒng)文件相關(guān)操作,會(huì)判斷文件的owner跟當(dāng)前owner是否為同一個(gè),為同一個(gè)則執(zhí)行。
25、php中垃圾回收機(jī)制
首先變量超出自己的作用域會(huì)被自動(dòng)回收內(nèi)存,也可以使用unset主動(dòng)釋放內(nèi)存。一次web請(qǐng)求結(jié)束后,程序中對(duì)象占用的內(nèi)存也會(huì)被釋放掉。
26、為何對(duì)象支持foreach,原理是啥?
foreach一個(gè)對(duì)象,是因?yàn)閷?duì)象實(shí)現(xiàn)了Iterator接口,或者子接口ArrayIterator。
foreach時(shí)實(shí)際調(diào)用被循環(huán)對(duì)象的相關(guān)方法實(shí)現(xiàn)的,接口方法有rewind,next,current,key,valid
27、安全寫一個(gè)文件
function write_file($filename, $content){
$file = fopen($filename, 'w+');
while(!flock($file, LOCK_EX)){
}
fwrite($file, $content);
fclose($file);//會(huì)釋放鎖
}