我们在之前的文章中我们介绍了php面试题的汇总,以及php面试题中thinkphp以及笔记题目的汇总,这些对新手以及工作经验不是很多的小伙伴们来说已经是足够使用了,但是对于一些高手甚至是工作三四年的朋友来说我们之前介绍的php面试题显然就不够用了,那么我们今天就大家来总结下php面试题中的php核心技术!
PHP核心技术
1.请写一段PHP代码,确保多个进程同时写入同一个文件成功
核心思路:加锁
2.写一个函数,尽可能高效的,从一个标准url里取出文件的扩展名,例如:http://www.php.cn/abc/de/fg.php?id=1需要取出php或.php
立即学习“PHP免费学习笔记(深入)”;
http [host] => www.php.cn [path] => /abc/de/fg.php [query] => id=1 )
$file = basename($arr['path']);
$ext = explode('.', $file);
return $ext[count($ext)-1];
} // 方案二
function getExt2($url){
$url = basename($url);
$pos1 = strpos($url,'.');
$pos2 = strpos($url,'?');
if (strstr($url,'?')) {
return substr($url,$pos1+1,$pos2-$pos1-1);
} else {
return substr($url,$pos1);
}
}
$path = "http://www.php.cn/abc/de/fg.php?id=1";
echo getExt1($path);
echo "
";
echo getExt2($path);?>相关题目:使用五种以上方式获取一个文件的扩展名,要求:dir/upload.image.jpg,找出.jpg或者jpg,必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如get_ext1(filename),getext2(file_name)
3.简述论坛中无限分类的实现原理
创建类别表如下:
CREATE TABLE category( cat_id smallint unsigned not null auto_increment primary key comment'类别ID', cat_name VARCHAR(30)NOT NULL DEFAULT''COMMENT'类别名称', parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT'类别父ID')engine=MyISAM charset=utf8;
编写一个函数,递归遍历,实现无限分类
4.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉)
过滤javascript脚本参考:
alert('cc');";
$pattern = '//si';
echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容
?>5.写出一个能创建多级目录的PHP函数
系统介绍:YIXUNCMS中专专版是易迅软件工作室在中秋节来临之即推出的专题模板建站系统,使用增强版后台管控系统,板板设计符合节日特点。易迅软件工作室恭祝全国人民中秋快乐。特别提示:由于网站页面的不同设计,部分后台功能未在前端进行体现。系统特点:1、采用目前流行的PHP语言编写,底层采用超轻量级框架作为系统支撑;2、页面布局使用DIV+CSS技术,遵循WEB标准,及大提高页面的浏览速度;3、使用应
6.PHP的垃圾收集机制是怎样的
PHP可以自动进行内存管理,清除不再需要的对象。
PHP使用了引用计数(reference counting)这种单纯的垃圾回收(garbage collection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。
7.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
8.PHP中如何判断一个字符串是否是合法的日期模式:2007-03-13 13:13:13。要求代码不超过5行
9.PHP中,如何获得一个数组的键值?
使用key()可以获得数组中当前元素的键名,使用current()则可以返回当前元素的值。
使用array_keys()则可以得到数组中所有的键名。
使用foreach结构foreach($arr as key=>value)可以通过key和value分别获取键名和值。
10.如果模板是用smarty模板。怎样用section语句来显示一个名为$data的组。比如:
$data=array(0=>array('id'=>8,'name'=>'name1'),1=>array('id'=>10,'name'=>'name2'),2=>array('id'=>15,'name'=>'name3')
);写出在模板页的代码?若用foreach语句又要怎样显示呢?
用section语句:
<{section name=test loop=$data start=0 step=1}>
id:<{$data[test].id}>
name:<{$data[test].name}>
<{sectionelse}>
数组为空
<{/section}>用foreach语句:
<{foreach from=$data item=test}>
id:<{$test.id}>
name:<{$test.name}>
<{foreachelse}>
数组为空
<{/foreach}>总结:
在我们这片文章我们主要给大家总结的是php面试题中php核心技术,对于新手可能有点深度了,但是对于经验丰富的朋友来说,这确实一个不错的选择!希望对你有所帮助!
相关推荐:










