PHP面试中常见的字符串与文件操作题目

分类:PHP / 时间:2015-11-15 18:23


由于最近考虑换工作,所以抽时间复习下面试中可能遇到的基本知识。下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操作相关函数的掌握程度。

1、PHP翻转中文字符串

function reverse($str){
	$r = array();
	for($i=0; $i<mb_strlen($str); $i++){
		$r[] = mb_substr($str, $i, 1, 'UTF-8');
	}
	return implode(array_reverse($r));
}
echo reverse('www.phpha.com天涯PHP博客');
//结果:'客博PHP涯天moc.ahphp.wwww'

2、PHP计算URL的文件后缀名

function getext($url){
	$data = parse_url($url);
	$path = $data['path'];
	$info = pathinfo($path);
	return $info['extension'];
}
echo getext('http://blog.phpha.com/archives/1670.html?id=1670');
//结果:'html'

3、PHP计算两个文件的相对路径

function getrpath($path, $conpath){
	$pathArr = explode('/', $path);
	$conpathArr = explode('/', $conpath);
	$dismatchlen = 0;
	for($i=0; $i<count($pathArr); $i++){
		if($conpathArr[$i] != $pathArr[$i]){
			$dismatchlen = count($pathArr) - $i;
			$arrleft = array_slice($pathArr, $i);
			break;
		}
	}
	return str_repeat('../', $dismatchlen).implode('/', $arrleft);
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/5.php';
echo getrpath($a, $b);
//结果:'../../../c/d/e.php'

4、PHP遍历目录下的所有文件和文件夹

function finddir($dir){
	$files = array();
	if(is_dir($dir)){
		if($handle = opendir($dir)){
			while(($file = readdir($handle)) !== false){
				if($file != '.' && $file != '..'){
					if(is_dir(rtrim($dir, '/').'/'.$file)){
						$files[$file] = finddir(rtrim($dir, '/').'/'.$file);
					}else{
						$files[] = rtrim($dir, '/').'/'.$file;
					}
				}
			}
			closedir($handle);
		}
	}
	return $files;
}
print_r(finddir('F:/Golang/src'));
//结果:
Array
(
    [0] => F:/Golang/src/hello.go
    [1] => F:/Golang/src/src.exe
    [test] => Array
        (
            [0] => F:/Golang/src/test/sss.txt
        )

)

除了这些字符串、文件操作的基本函数考察外,基础算法也是面试中考察比较多的,具体请看以前总结的关于PHP基础算法的文章。《常用算法PHP版-面试必备