1.写出一个能创建多级目录的PHP函数
function createdir($path,$mode){
if (is_dir($path)){ //判断目录存在否,存在不创建
echo “目录'” . $path . “‘已经存在”;
}else{ //不存在创建
$re=mkdir($path,$mode,true); //第三个参数为true即可以创建多极目录
if ($re){
echo “目录创建成功”;
}else{
echo “目录创建失败”;
}
}
}
$path=”/aa/bb/cc/cd”; //要创建的目录
$mode=0755; //创建目录的模式
createdir($path,$mode);//测试
2.请写一段PHP代码,确保多个进程同时写入同一个文件成功
$fp = fopen("lock.txt","w+");
if (flock($fp,LOCK_EX)) {
//获得写锁,写数据
fwrite($fp, "write something");
// 解除锁定
flock($fp, LOCK_UN);
} else {
echo "file is locking...";
}
fclose($fp);
3.
写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
function my_scandir($dir){
$files = array();
if(is_dir($dir)){
if ($handle = opendir($dir)) {
while (($flie = readdir($handle))!== false) {
if ($flie!="." && $file!="..") {
if (is_dir($dir."/".$file)) {
$files[$file] = my_scandir($dir."/".$file);
} else {
$files[] = $dir."/".$file;
}
}
}
closedir($handle);
return $files;
}
}
}
4.简述论坛中无限分类的实现原理
创建类别表如下:
CREATETABLEcategory(
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;
function tree($arr,$pid=0,$level=0){
static $list = array();
foreach ($arr as $v) {
//如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
if ($v['parent_id'] == $pid) {
$v['level'] = $level;
$list[] = $v;
tree($arr,$v['cat_id'],$level+1);
}
}
return $list;
}
5.请写一个函数验证电子邮件的格式是否正确(要求使用正则)(新浪)
preg_match('/^[\w\-\.][email protected][\w\-]+(\.\w+)+$/',$email);
6.编写函数取得上一月的最后一天
/** * 获取给定月份的上一月最后一天 * @param $date string 给定日期 * @return string 上一月最后一天 */
function get_last_month_last_day($date = ''){
if ($date != '') {
$time = strtotime($date);
} else {
$time = time();
}
$day = date('j',$time);//获取该日期是当前月的第几天
return date('Y-m-d',strtotime("-{$day} days",$time));
}
// 测试
echo get_last_month_last_day();
echo "<br />";
echo get_last_month_last_day("2013-3-21");
7.
如果我的网站用的utf-8编码,为防止乱码出现,都需要注意哪些地方?
从以下几个方面考虑:
- 数据库中库和表都用utf8编码
- php连接mysql,指定数据库编码为utf8
mysql_query(“set names utf8”);
- php文件指定头部编码为utf-8
header(“content-type:text/html;charset=utf-8”);
- 网站下所有文件的编码为utf8
- html文件指定编码为utf-8
<meta http-equiv="Content-Type"content="text/html;charset=utf-8"/>
8.使用五种以上方式获取一个文件的扩展名
方法1:
$string= 'dir/upload.image.jpg'; $i= strrpos($string, '.'); //得到指定分割符在字符串的最后一次出现的位置 $file_type= substr($string, $i);//截取字符串
方法2:
$string= 'dir/upload.image.jpg'; $arr= pathinfo($string); //返回文件路径的信息 print_r($arr); $file_type= $arr['extension'];
9.一羣猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。(新浪)(小米)
// 方案一,使用php来模拟这个过程
function king($n,$m){
$mokey = range(1, $n);
$i = 0;
while (count($mokey) >1) {
$i += 1;
$head = array_shift($mokey);//一个个出列最前面的猴子
if ($i % $m !=0) {
#如果不是m的倍数,则把猴子返回尾部,否则就抛掉,也就是出列
array_push($mokey,$head);
}
// 剩下的最后一个就是大王了
return $mokey[0];
}
}