最新php面试题及答案
时间:2009-10-9 作者:smarteng 分类: PHP相关
首先声明这是是从网上搜的,当然答案我看过,觉得对的就贴上了,正则题,大多是自己写的,
如有不对,请留言~
笔试题:
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名(8分)
例如: http://www.cmstop.com/abc/123/test.php?id=1&catid=15
需要取出 php
function getExt($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);
}
}
[break]
2. 写一个函数,算出两个文件的相对路径(8分)
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
function getRelativePath($a, $b) {
$returnPath = array(dirname($b));
$arrA = explode('/', $a);
$arrB = explode('/', $returnPath[0]);
for ($n = 1, $len = count($arrB); $n < $len; $n++) {
if ($arrA[$n] != $arrB[$n]) {
break;
}
}
if ($len - $n > 0) {
$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));
}
$returnPath = array_merge($returnPath, array_slice($arrA, $n));
return implode('/', $returnPath);
}
echo getRelativePath($a, $b);
3. 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(10分)
function myScandir($dir){
$files = array();
if ( $handle = opendir($dir) ){
while ($file = readdir($handle)) {
if ($file != ".." && $file != ".") {
if ( is_dir($dir . "/" . $file) ) {
$files[$file] = myScandir($dir . "/" . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
4. PHP5中魔术方法函数有哪几个,请举例说明各自的用法(8分)
类中的魔术方法:
The function names __construct 类的构造函数,
__destruct 类的析构函数,
__get 取得类的属性, __set 设置类的属性, __isset 判断是否设置, __unset 销毁(see Overloading),
__toString , __clone are magical in PHP classes.
PHP中的魔术方法
取得是否自动加转义符的设置
get_magic_quotes_gpc();
5.请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响(10分)
exec()
system()
passthru()
popen()
escapeshellcmd()
pcntl_exec()
6.将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。(7分)
<?php
$num = "1234567890.11";
$num = preg_replace('/(?<=[0-9])(?=(?:[0-9]{3})+(?![0-9]))/', ',', $num);
echo $num;
?>
7.使用正则表达式提取一段标识语言(html或xml)代码段中指定标签的指定属性值(需考虑属性值对不规则的
情况,如大小写不敏感,属性名值与等号间有空格等)(12分)
此处假设需提取test标签的attr属性值,请自行构建包含该标签的串
<test attr = "abcd" />
<?php
$string ='<test attr = "ddfdf" />';
$match = '/\<\w{4} \w{4} = \"(\w+)\" \/\>/';
preg_match($match,$string, $matches);
echo $matches[1];
?>
8.请建立一个索引同时提升以下两个SQL语句的性能,如何知道你建立的索引被使用了?(10分)
select * from content where modelid=2 and catid=1 and status=1 order by published desc,
contentid desc
select * from content where catid=1 and status=1 order by contentid desc
CREATE INDEX content_id ON content (catid,status)
9. 设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输
入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示(12分)
var theResponse = window.prompt("欢迎?","请在此输入您的姓名。");
10.基于jquery框架实现以下行的向上、向下和删除(15分)
<ul>
<li><span>一</span><span id="1"><a href="javascript: move_up(1)">上移</a> | <a
href="javascript: move_down(1)">下移</a> | <a href="javascript: del(1)">删除</a></span></li>
<li><span>二</span><span id="2"><a href="javascript: move_up(2)">上移</a> | <a
href="javascript: move_down(2)">下移</a> | <a href="javascript: del(2)">删除</a></span></li>
<li><span>三</span><span id="3"><a href="javascript: move_up(3)">上移</a> | <a
href="javascript: move_down(3)">下移</a> | <a href="javascript: del(3)">删除</a></span></li>
</ul>
<script type="text/javascript">
function move_up(id)
{
$(body #1)
}
function move_down(id)
{
}
function del(id)
{
}
</script>