博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP笔试题(不断更新中...)

Posted on 2010-11-03 13:23  蜗牛向上爬  阅读(6128)  评论(2编辑  收藏  举报

共220分,选择题2分×20=40分,简答题4分×15=60分,实现题8分×15=120分

一。选择(每题2分,共40分)
1.php代表什么意思?
A.Hypertext Preprocessor(超文本预处理器)
B.Hyperlink Preprocessor(超链接预处理器)
C.Personal Homepage (个人主页空间)

2.以下PHP标记哪个是错误的?
1.<? ?> 2. <?PHP   ?> 3.<% %> 4.<SCRIPT language="php">...</script>
A.1 B.2 C.3 D.4 E.没有

3.下边哪个变量是非法的?
A. $_10
B. ${“MyVar”}
C. &$something
D. $10_somethings
E. $aVaR

4.print() 和 echo()的区别是什么?
A.print()可以作为一个表达式的一部分,echo() 不可以
B.echo()可以作为一个表达式的一部分,print() 不可以
C.echo() 可以用在 CLI version of PHP, print() 不可以
D.print() 可以用在 CLI version of PHP, echo() 不可以
E.没有区别

5.分析以下代码:
<?php
define("STOP_AT", 1024);
$result = array();
/* Missing code */
{
$result[] = $idx;
}
print_r($result);
?>
在/* Missing code */ 处填什么代码才能有以下的输出?
Array
{
[0] => 1
[1] => 2
[2] => 4
[3] => 8
[4] => 16
[5] => 32
[6] => 64
[7] => 128
[8] => 256
[9] => 512
}

A. foreach($result as $key => $val)
B. while($idx *= 2)
C. for($idx = 1; $idx < STOP_AT; $idx *= 2)
D. for($idx *= 2; STOP_AT >= $idx; $idx = 0)
E. while($idx < STOP_AT) do $idx *= 2

6.下边代码中,index.php 如何得到form传递的email的值?
(选择2个答案)
<form action="index.php" method="post">
<input type="text" name="email"/>
</form>
A. $_GET['email']
B. $_POST['email']
C. $_SESSION['text’]
D. $_REQUEST['email']
E. $_POST['text']

7.分析下段代码, 数组 $multi_array的值cat将会被如何引用?
<?php
$multi_array = array("red",
                     "green",
                      42 => "blue",
                     "yellow" => array("apple",
                     9 => "pear",
                     "banana",
                     "orange" => array("dog",
                                       "cat",
                                       "iguana")
                                     )
                    );
?>
A. $multi_array['yellow']['apple'][0]
B. $multi_array['blue'][0]['orange'][1]
C. $multi_array[3][3][2]
D. $multi_array['yellow']['orange']['cat']
E. $multi_array['yellow']['orange'][1]


8. 如何将一个数组元素的排列顺序反转过来(例如以下代码反转以后的顺序是: array ('d', 'c', 'b', 'a'))? (选择2个答案)

<?php
$array = array ('a', 'b', 'c', 'd');
?>
A. array_flip()
B. array_reverse()
C. sort()
D. rsort()
E. None of the above


9. 请从以下方法中选出最简单的方法来计算一个数组的所有值的和
A. 通过 for 循环
B. 通过 foreach 循环
C. 用 array_intersect 方法
D. 用 the array_sum 方法
E. 用 array_count_values()方法

10. 以下选项哪个不能将 strings $s1 和 $s2 合并成一个单独的string?
A. $s1 + $s2
B. "{$s1}{$s2}"
C. $s1.$s2
D. implode('', array($s1,$s2))
E. All of the above combine the strings

11. 比较两个字符串大小的最好方法是什么?

A. Using the strpos function
B. Using the == operator
C. Using strcasecmp()
D. Using strcmp()

12. 以下哪些表达式返回值为TRUE? (选择2个答案)
A. '1top' == '1'
B. 'top' == 0
C. 'top' === 0
D. 'a' == a
E. 123 == '123'

13.哪个选项会匹配下边的这个正则表达式?

              /.*\*123\d/

A. ******123
B. *****_1234
C. ******1234
D. _*123

14. 以下代码的功能是一行一行的读取一个文件并输出,那么在问号处填入哪个方法可以实现这个功能?

<?php
     $file = fopen("test", "r");
       while(!feof($file)) {
      echo ????????????;
}

A. file_get_contents($file)
B. file($file)
C. read_file($file)
D. fgets($file)
E. fread($file)

15.请选出最简单的方法将microtime()函数输出的结果转换成数字型的值


A. $time = implode (' ', microtime());
B. $time = explode (' ', microtime()); $time = $time[0] + $time[1];
C. $time = microtime() + microtime();
D. $time = array_sum (explode (' ', microtime()));
E. None of the above

16. 以下哪些函数的返回值不是时间戳类型的? (选择2个答案)
A. time()
B. date()
C. strtotime()
D. localtime()
E. gmmktime()

17. 以下这些 DBMSs 中,哪个没有PHP内部扩展?

A. MySQL
B. IBM DB/2
C. PostgreSQL
D. Microsoft SQL Server
E. None of the above


18. 以下哪些是正确的PHP stream传送方式 ? (选择2个答案)
A. http
B. STDIO
C. ftp
D. STDOUT
E. stream


19.以下哪个错误无法被标准的错误控制器获取?

A. E_WARNING
B. E_USER_ERROR
C. E_PARSE
D. E_NOTICE

20. trigger_error() 和user_error()的区别是什么?

A. trigger_error() 允许程序抛出系统级错误提示
B. user_error() 允许程序抛出系统级错误提示
C. user_error() 不可用于错误控制
D. trigger_error() 只在PHP5中有效
E. 没有区别

二。简答题(每题4分,共60分)

1.简单描述一下 require(),include,require_once(),include_once()之间的区别

2.php中数据类型分几种,都有哪些数据类型

3.用PHP打印出前一天的时间格式是0000-00-00 00:00:00

4.用PHP打印出这样的时间格式 Feb-02-2008

5.php如何解析xml文件?请举例说明

6.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在哪个预定义变量中;而链接到当前页面的URL记录在哪个预定义变量中

7.简单描述 asort()、ksort()、rsort()的作用分别是什么?

8.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是什么

9.isset()和empty()的区别

10.请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

11.有一个网页地址 http://www.test.com/111.php,如何得到它的内容?

12.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):

13.php webservice 是通过什么协议实现的,简单写一下实现方式

14.我们在使用header进行跳转时经常会提示header already sent 这个错误,这是什么原因,该如何解决

15.form中复选框内容提交时,如何操作才能最方便快捷的获得所有内容?


三(每题8分,共120分)
1.如何实现字符串翻转?若不允许用php内置函数请编程实现。

2.写一段代码找出给定的文章两边最近的html标签。比如:

<div id="content">北京时间1月25日,NBA官方公布了2008年全明星首发名单。东部大前锋凯尔特人的<strong>凯文-加内特</strong>在最终结果统计中成为新一届票王,<span style="data">他的票数达到了2,399,148票</span>同时球迷也将他带入了个人的第11场全明星比赛。&lt;/div>

意思是,如果以上给你的文字是:他的票数达到了2,399,148票。
那么两边的标签自然是<span style="data">和</span>;如果给初的文字是:

东部大前锋凯尔特人的<strong>凯文-加内特</strong>在最终结果统计中成为新一届票王,<span style="data">他的票数达到了2,399,148票</span>同时球迷也将他带入

那么标签就是<div id="content">和</div>

3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

4.有一组数,29、30、40、16、57、69、42、54、46、31写程序排列这组数(要求:第一个是最大的,第二个是最小的,第三个是剩下中最大的,第四个是剩下最小的,第五个是剩下中最大的,第六个是剩下中最小的,依次向下排列。

5.请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。

6.编写一个算法,让两个日期时间相减后得到小时数。
例如$a="2008-01-02   12:12:12"   $b="2008-01-05   14:14:14"  
然后希望$b减去$a,得出的值换算成小时

7.编写一个网页计数器程序,网页每刷新一次访问量加一

8.定义一个叫$a的变量并将它的值设定为'pig'后打印出来。现在改变$a的值为'cow',但是不能对$a使用任何赋值操作,也就是说当你再次打印$a变量的时候输出的字符串为'cow'。

9.计算某段字符串中某个字符出现的次数(例如: gdfgfdgd59gmkblg中g的次数)

10.如何通过php程序防止外部页面提交表单?编写一段代码

11.编写函数判断字符串中是否全是中文

12.编写函数取得上一月的最后一天

13.用最少5种方法取得某一文件路径的扩展名(例如:www.test.com/index.php,取得php)

第1种方法

function get_extension($file)

{

    substr(strrchr($file, '.'), 1);

}

第2种方法:

function get_extension($file)

{

    return substr($file, strrpos($file, '.')+1);

}

第3种方法:

function get_extension($file)

{

    return end(explode('.', $file));

}

第4种方法:

function get_extension($file)

{

    $info = pathinfo($file);

    return $info['extension'];

}

第5种方法:

function get_extension($file)

{

    return pathinfo($file, PATHINFO_EXTENSION);

}

以上几种方式粗看了一下,好像都行,特别是1、2种方法,在我不知道pathinfo有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。

  1.没有文件扩展名

  2.路径中包含了字符.,如/home/test.d/test.txt

  3.路径中包含了字符.,但文件没有扩展名。如/home/test.d/test

很明显:1、2不能处理第三种情况,3不能正确处理第一三种情况。4可以正确处理,但是在不存在扩展名时,会发出一个警告。只有第5种方法才是最正确的方法。顺便看一下pathinfo方法。

14.简述php中如何防止sql注入,并写出程序代码

15、编程实现图片打水印