php面试题及答案
PHP面试题及答案

PHP面试题及答案PHP面试题及答案PHP是一种通用开源脚本语言,下面是店铺为大家搜索整理的关于PHP面试题及答案题,欢迎参考阅读,希望对大家有所帮助!想了解更多相关信息请持续关注我们店铺!练习题一1. echo count(“abc”); 输出什么?答案:12. 用PHP代码写出显示客户端IP与服务器IP的代码。
答案:客户端getenv(‘REMOTE_ADDR’); 服务器端getenv(‘SERVER_ADDR’);// gethostbyname(“”);3. error_reporting(2047)什么作用?答案:相当于error_reporting(‘E_ALL’); 输出所有的错误。
4.如何实现PHP、JSP交互?答案:题目有点含糊不清,SOAP,XML_RPC,Socket function,CURL都可以实现这些,如果是考PHP和Java的整合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答), 例如$foo = new Java(‘ng.System’);5. 打开php.ini中的Safe_mode,会影响哪些参数?至少说出6个。
答案:此模块打开时,php将检查当前脚本的拥有者是否和受操作文件的拥有者相同,因此,将影响文件操作类函数,程序执行函数(program Execution Functions)。
这些函数有.pathinfo,basename,fopen,system,exec,proc_open 等函数;6. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)。
function checkEmail($mail){$reg = ‘/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/’;$rst = preg_match($reg , $mail);if($rst){return TRUE;}else {return FALSE;} }7. 写个函数用来对二维数组排序。
PHP精典面试题(附答案)

PHP精典⾯试题(附答案)1.输出Mozilla/4.0(compatible;MISIE5.01;Window NT 5.0)是,可能输出的语句是? A:$_SERVER['HTTP_USER_AGENT_TYPE']; B: $_SERVER['HTTP_USER_AGENT']; C: $_SERVER['USER_ACENT']; D: $_SERVER['AGENT'];2.下⾯功能php⽆法实现的是? A: 服务端脚本运⾏; B: 命令⾏脚本运⾏; C: 客户端图形界⾯(GUI)程序; D: 浏览器执⾏DOM操作3.下⾯说法不正确的是? A: PHP有四种标量类型:布尔型,整型,浮点型,字符串; B: 浮点型与双精度是同⼀种类型 C: 复合类型包括:数组,对象,资源; D: 伪类型:混合型,数字型,回调;4.执⾏代码后<?phpecho function_exists('print');>输出的结果是? A: 空 B: true C: false D: FALSE5.下⾯不是PHP语法的组成部分的函数是? A: array B: eval C: each D: list6.执⾏下⾯代码的结果是什么?<?php$bool = true;echo gettype($bool);echo is_string($bool);> A: boolean B: boolean0 C: booleanFalse D: booleanfalse7.写出下⾯程序代码执⾏结果$a = 12;$b = 012;$c = 0x12;echo$a,"\n",$b,"\n",$c;> A: 22 B: 10 C: 6 D: 128下⾯代码的执⾏结果是?<?phpecho 1+2+"3+5+6";> A: 0 B: 3 C: 6 D: "33+4+5"9.下⾯代码加⼊下⾯那个函数后返回true? return ? == 'A'; A: ord(65) B: chr(65) C: 65+" D: "65+10.下⾯代码输出正确的是?<?php$a = array(1=>5,5=>8,22,2=>'8',81);echo$a[7];echo$a[6];echo$a[3];> A: 空 22 81 B: 空 81 22 C: 81 22 空 D: 空空空11.下⾯代码的输出结果是?<?php$a[bar] = 'hello';echo$a[bar];echo$a['bar'];> A: hello B: 空空 C: 报错 D: hello hello12.写出下⾯代码的结果:<?phpecho 1>>0;echo 2>>1;echo 3<<2;> A: 012 B: 106 C: 1112 D: 12313.下⾯代码执⾏结果?<?phpfor($i=1;$i<10;$i++){print$i;}> A: 0123456789 B: 01234567890 C: ⽆输出 D: 死循环14.下⾯对于echo,print 的描述正确的是? A: echo,print都可以打印多个参数 B: print 可以打印多个参数,echo不可以 C: echo可以打印多个参数,print不可以 D: echo,print 都不可以打印多个参数15.对于以下的代码<?php$fruits = array('strawberry'=>'red','banana'=>'yellow'); > 能够正确得到结果'yellow' 的代码是? A: echo "A banana is {$fruits['banana']}"; B: echo "A banana is $fruits['banana']"; C: echo "A banana is {$fruits[banana]}"; D: echo "A banana is $fruits[banana]"; 16.下⾯代码执⾏结果是?<?phpfunction change(){static$i = 0;$i++;return$i;}print change();print change();>正确答案:1,217.$foo = 'test';$bar = <<<EOT$foo barEOT;echo$bar;>上⾯语句输出的结果是? A: $foo bar; B: 'EOT' $foo bar EOT C: test bar D: 'EOT' test bar EOT18.$a = 3;$b = 4;if($a || $b = 5){echo 'tudou';} $b的值是? A: 4; B: 5 C: 3; D: false;19.下⾯那个表达式不能将两个字符串$s1和$s2串联成⼀个单独的字符串? A: $s1+$s2 B: "{$s1}{$s2}" C: $s1.$s2 D: implode(",array($s1,$s2)) E: 以上⽅法都能实现20.下⾯的脚本运⾏以后,$array数组所包含的值是什么?<?php$array = array('1','1');foreach($array as$k => $v){$v = 2;}> A: array('2','2') B: array('1','1') C: array(2,2) D: array(Null,Null)21.cron后台常驻程序(daemon)⽤于? A: 负责⽂件在⽹络中共享 B: 管理打印⼦系统Manages theprinting subsystem C: 跟踪管理系统信息和错误 D: 管理系统⽇常任务的调度(scheduing)22.怎么了解您在当前的⽬录下还有多⼤空间? A: Use df23.有⼀个备份程序mybackup,需要在周⼀⾄周五下午⼀点和晚上⼋点各运⾏次,下⾯那⼀条crontab的项可以完成⼯作? A: 0 13,20 * * 1,5 mybackup B: 0 13,20 * * 1,2,3,4,5 mybackup C: *13,20 * * 1,2,3,4,5, mybackup D: 0 13,20 1,5 * * mybackup24.下⾯那条命令可以吧f1.txt复制为f2.txt ? A: cp f1.txt f2.txt B: cat f1.txt|f2.txt C: cat f1.txt||f2.txt D: copy f1.txt|f2.txt25.使⽤命令可以查看linux的启动信息? A: mesg -d B: dmesg C: cat /etc/mesg D: cat /var/mesg26.在vi 中退出不保存的命令是? A: :qt B: :r C: :wq D: :q!27.下⾯那个选项没有将john添加到users数组中? A: $users[] = 'john'; B: array_add($users,'john'); C: array_push($users,'john'); D: $users ||= 'john';[a,c]28.下列不属于Javascript语法关键字/保留字的是? A: var B: $ C: functiom D: while29.下列不属于JavaScript DOM事件的是? A: onclick B: onkeydown C: onbodyload D: onmouseover30.下列PHP函数中不能直接在页⾯上输出字符串的函数是?31.在PHP中,'+'操作符的功能不包括 A: 字符串连接 B: 数组数据合并 C: 变量数据相加32.⽤php获取当前时间并打印,打印格式为2006-5-10 22:21:21echo date('Y-n-m H:i:s');33,字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么? 字符串转数组函数: str_split() explode() 数组转字符串 join() implode() 字符串截取 substr() mb_substr() 字符串替换 str_replace() preg_replace() 字符串查找 preg_match() preg_match_all() strops() strrops()34.解释⼀下php类中pretect,public,private,interface,abstract,final,static的含义 pretect:受保护的 public:公有的 private:私有的 interface:接⼝ abstract:抽象类或者抽象⽅法 final:最终版本的类或者⽅法 static:静态属性或者⽅法35.如何把字符串'08/26/2004'替换成'2004-08-26'?$date = '08/26/2004';echo preg_replace('/(\d+)\/(\d+)\/(\d+)/',$3-$1-$2,$date);36.从表login中选出name字段包含admin的前10条结果所有信息的sql语句select * from login where name '%admin%' limit 10;37.解释左连接,右连接,内连接,索引: 左连接: left join on 左连接是以左边的表为主表,先输出左边表的所有数据,右边匹配输出,不匹配的为null 右连接:right join on 右连接是以右边的表为主表,先输出右边表的所有数据,左边匹配输出,不匹配的为null 内连接:inner join on 内连接必须同时符合条件的内容才会输出,相等于普通的多表查询38.写⼀个函数。
php面试题目带答案(3篇)

第1篇一、基础题1. 问题:请解释PHP中`$_SERVER`的作用。
答案:`$_SERVER`是一个全局数组,它包含了头信息、路径和脚本位置等信息。
通过这个数组,我们可以获取到诸如服务器的名称、执行脚本的路径、HTTP请求头等信息。
2. 问题:简述PHP中的魔术引用(`&`)的作用。
答案:魔术引用在PHP中用于引用传递。
当使用`&$variable`时,实际上传递的是变量的引用,而不是值。
这在函数内部修改变量时非常有用,因为它允许函数内部直接修改外部传入的变量。
3. 问题:请解释PHP中的`include`和`require`的区别。
答案:`include`和`require`都是用于包含其他PHP文件的工具,但它们在错误处理上有区别。
`require`如果找不到文件,会抛出一个致命错误并终止脚本执行;而`include`则会输出一条警告信息,但不会终止脚本执行。
4. 问题:如何使用PHP获取当前的时间戳?答案:可以使用`time()`函数获取当前的时间戳,该函数返回自1970年1月1日00:00:00 UTC以来的秒数。
5. 问题:简述PHP中的数据类型。
答案:PHP有八种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、对象(object)、资源(resource)、数组(array)和NULL。
二、进阶题1. 问题:请解释PHP中的`session`和`cookie`的区别。
答案:- `session`存储在服务器端,通过会话ID来识别不同的用户,安全性较高。
- `cookie`存储在客户端,通常用于存储用户偏好设置或其他小量数据,安全性相对较低。
2. 问题:如何使用PHP进行文件上传?答案:- 首先,需要设置`php.ini`文件中的`file_uploads`和`upload_max_filesize`参数。
- 在HTML表单中,使用`enctype="multipart/form-data"`属性。
php面试题及答案100道(3篇)

第1篇PHP基础知识1. 什么是PHP?- PHP是一种开源的、服务器端的脚本语言,主要用于网页开发。
2. PHP有哪些优点?- 灵活性高、易于学习、开源免费、广泛的社区支持。
3. PHP的运行环境有哪些?- Apache、Nginx、IIS等服务器软件。
4. PHP的版本有哪些?- PHP 5.x、PHP 7.x、PHP 8.x。
5. 如何检查PHP版本?- 使用`phpinfo()`函数或者在PHP文件中添加`echo phpversion();`。
6. 什么是PHP的超全局变量?- `$GLOBALS`、`$_SERVER`、`$_GET`、`$_POST`、`$_FILES`等。
7. 如何设置PHP的默认编码?- 在PHP配置文件(php.ini)中设置`default_charset`。
8. 什么是PHP的数据类型?- 整数、浮点数、字符串、布尔值、数组、对象、资源、NULL。
9. 如何定义一个PHP变量?- 使用$符号后跟变量名。
10. 什么是变量作用域?- 全局作用域、局部作用域、静态作用域。
基本语法11. 如何注释PHP代码?- 单行注释:`//`- 多行注释:`/ /`12. 如何比较两个字符串?- 使用`==`或`===`。
13. 如何遍历数组?- 使用`foreach`循环。
14. 如何定义一个函数?- 使用`function`关键字。
15. 如何调用一个函数?- 使用函数名后跟括号。
16. 如何传递参数给函数?- 在函数定义时列出参数,调用时传递值。
17. 如何定义一个类?- 使用`class`关键字。
18. 如何创建一个对象?- 使用`new`关键字。
19. 如何访问对象属性和方法?- 使用`$object->property`和`$object->method();`。
20. 什么是魔术方法?- PHP中的特殊方法,如`__construct()`、`__destruct()`、`__get()`等。
php面试题试题及答案(3篇)

第1篇一、基础语法与变量1. 问题:PHP中的变量命名规则是什么?答案:PHP中的变量命名规则如下:- 变量名必须以字母或下划线开头。
- 变量名可以包含字母、数字和下划线。
- 变量名是区分大小写的。
- 变量名不能包含空格或点。
2. 问题:如何声明一个PHP变量?答案:在PHP中,可以使用以下方式声明一个变量:```php$variable = "Hello, World!";```或者简写为:```php$variable = "Hello, World!";```3. 问题:PHP中的变量类型有哪些?答案:PHP中的变量类型包括:- 整数(Integer)- 浮点数(Float)- 字符串(String)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何检查一个变量的类型?答案:可以使用`gettype()`函数来检查一个变量的类型:```php$var = 10;echo gettype($var); // 输出:integer```二、数据类型转换1. 问题:如何在PHP中进行数据类型转换?答案:在PHP中,可以使用以下方式进行数据类型转换:- 使用类型转换运算符(例如:(int) $var, (float) $var, (string) $var)- 使用`settype()`函数- 使用类型强制转换运算符(例如:$var = (int) $var;)2. 问题:如何将字符串转换为整数?答案:可以使用类型转换运算符或`settype()`函数:```php$string = "123";$int = (int) $string; // 或者 $int = settype($string, "integer"); ```3. 问题:如何将整数转换为字符串?答案:可以使用类型转换运算符:```php$int = 123;$string = (string) $int;```三、条件语句与循环1. 问题:PHP中的条件语句有哪些?答案:PHP中的条件语句包括:- `if`语句- `if...else`语句- `switch`语句2. 问题:如何使用`if`语句?答案:```phpif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```3. 问题:如何使用`switch`语句?答案:```phpswitch ($expression) {case 值1:// 当表达式与值1匹配时执行的代码 break;case 值2:// 当表达式与值2匹配时执行的代码 break;default:// 默认情况下执行的代码}```4. 问题:PHP中的循环有哪些?答案:PHP中的循环包括:- `for`循环- `while`循环- `do...while`循环- `foreach`循环5. 问题:如何使用`for`循环?答案:```phpfor (初始化表达式; 条件表达式; 更新表达式) { // 循环体}```四、函数与面向对象编程1. 问题:如何在PHP中定义一个函数?答案:```phpfunction 函数名(参数列表) {// 函数体}```2. 问题:如何调用一个函数?答案:```php函数名(参数列表);```3. 问题:PHP中的函数有哪些返回值?答案:PHP中的函数可以返回以下类型的值:- 字符串(String)- 整数(Integer)- 浮点数(Float)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何在PHP中定义一个类?答案:```phpclass 类名 {// 类属性和方法}```5. 问题:如何在PHP中使用构造函数和析构函数?答案:构造函数用于在创建对象时初始化对象,析构函数用于在对象销毁时执行清理工作。
php面试问题及答案

php面试问题及答案php面试问题及答案一1.简述两种屏蔽php程序的notice警告的方法初始化变量,文件开始设置错误级别或者修改php.ini 设置error_reportingset_error_handler 和 @抑制错误01.在程序中添加:error_reporting (E_ALL &~E_NOTICE);02.或者修改php.ini中的:error_reporting = E_ALL改为:error_reporting = E_ALL & ~E_NOTICE03.error_reporting(0);或者修改php.inidisplay_errors=Off2.instanceof的作用, 经常在什么设计模式中使用单例模式,但是其他的模式也会用到3.1023用二进制表示, 并简述计算过程10-21023%2=1511%2 =1255%2 =1127%2 =163%2 =131%2 =115%2 =17%2 =13%2 =11%2 =10 =0------------------------------------------- 10232^9=511k=910 9 8 7 6 5 4 3 2 11 1 1 1 1 1 1 1 1 1----------------------1023 11023-1/2=511 1511-1/2=255 1255-1/2=127 1127-1/2=63 163-1/2=31 131-1/2=15 115-1/2=7 17-1/2=3 13-1/2=1 1-----------------------------------------------2-10只需用将二进制数的各个位上的数从最右边开始,最右边的第一个数乘以二的零次方,第二个数乘以二的一次方,第三个数乘以二的二次方,依次类推可得第n个数乘以二的(n-1)次方,然后把得到的结果相加即可例如:110011=1*2^0+1*2^1+0*2^2+0*2^3+1*2^4+1*2^5=51这也可以算是一个公式就是An*2^(n-1) An表示二进制数最右边开始的第n个数,将第一项第二项第三项一直到第n项用式子An*2^(n-1) 计算出来并加在一起即可php面试问题及答案二1.有如下数据库, 用原生态mysql扩展去连接并查询user表的前十行host: 192.168.0.254port: 3306user: onepass: piecedatabase: db_usertable: user$link =mysql_connect("192.168.0.254:3306","one","piece") or die('Could not connect: '.mysql_error());mysql_select_db('db_user',$link);$query = mysql_query("select * from user limit 10");while($rs = mysql_fetch_array($query,MYSQL_ASSOC))2.符串”\r”,”\n”,”\t”,”\x20”分别代表什么?答案:“\r”代表的含义是:在Linux、unix 中表示返回到当行的最开始位置,在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \n 的效果。
php经典面试题及答案

28、GD库是做什么用的? (1分)
29、指出一些在PHP输入一段HTML代码的办法。(1分)
30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)
(a) fget() (b) file_open() (c) fopen() (d) open_file()
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
get限制表单中数据集的范围为asc2码,而post可以支持整个iso10646字符集。
2.session与cookie的区别?
答:cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
3.数据库中的事务是什么?
答:事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。
18. 请写一个函数验证电子邮件的格式是否正确 (2分)
19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)
20.如何修改SESSION的生存时间. (1分)
--------------------------------------------------------------------
php基础面试题附答案(3篇)

第1篇1. 介绍PHP的基本特点和应用场景问题:PHP是一种什么类型的编程语言?它有哪些主要特点和应用场景?答案:PHP是一种开源的、服务器端脚本语言,主要特点包括:- 跨平台:PHP可以运行在多种操作系统上,如Windows、Linux、Mac OS等。
- 嵌入HTML:PHP可以与HTML、JavaScript、CSS等网页设计语言混合使用。
- 简单易学:PHP语法简洁,易于学习和使用。
- 强大的数据库支持:PHP与MySQL、Oracle、SQLite等多种数据库系统兼容良好。
- 开源免费:PHP是免费的,且具有丰富的社区支持。
PHP的主要应用场景包括:- 网站开发:PHP常用于开发动态网站,如电子商务、社交网络、内容管理系统等。
- 企业级应用:PHP可以用于开发企业级应用,如ERP、CRM等。
- 云服务:PHP可以与云计算平台集成,用于开发云服务。
2. 解释PHP的变量类型问题:PHP中有哪些变量类型?请举例说明。
答案:PHP中有以下几种变量类型:- 整型(Integer):用于存储整数,如`$age = 25;`- 浮点型(Float):用于存储小数,如`$pi = 3.14;`- 字符串(String):用于存储文本,如`$name = "张三";`- 布尔型(Boolean):用于存储真(true)或假(false),如`$isLogin = true;`- 数组(Array):用于存储多个值,如`$colors = ["red", "green", "blue"];`- 对象(Object):用于存储类实例,如`$user = new User();`- 资源(Resource):用于存储数据库连接、文件句柄等,如`$handle =fopen("file.txt", "r");`3. 比较require和include的区别问题:require和include有什么区别?答案:require和include都是用于引入外部文件,但它们之间有一些区别:- require:如果引入的文件不存在,会抛出致命错误并停止脚本执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php面试题及答案,经典php笔试题与答案问题1.考虑如下脚本。
标记处应该添加什么代码才能让脚本输出字符串 php?$alpha = 'abcdefghijklmnopqrstuvwxyz';$letters = array(15, 7, 15);foreach($letters as $val) {/* 这里应该加入什么 */}>A.echo chr($val);B.echo asc($val);C.echo substr($alpha, $val, 2);D.echo $alpha{$val};E.echo $alpha{$val+1}2.以下哪一项不能把字符串$s1 和$s2 组成一个字符串?A.$s1 + $s2B.”{$s1}{$s2}”C.$s1.$s2D.implode(”, array($s1,$s2))E.以上都可以3.变量 $email 的值是字符串****************,以下哪项能把字符串转化成?A.substr($email, strpos($email, “@”));B.strstr($email, “@”);C.strchr($email, “@”);D.substr($email, strpos($email, “@”)+1);E.strrpos($email, “@”);4.给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就把每个独立的值放入一个新创建的数组?A.strstr()B.不可能只调用一次就完成C.extract()D.explode()E.strtok()5.要比较两个字符串,以下那种方法最万能?A.用 strpos 函数B.用==操作符C.用 strcasecmp()D.用 strcmp()6.以下哪个 PCRE 正则表达式能匹配字符串 php|architect?A..*B.…|………C.\d{3}\|\d{8}D.[az]{3}\|[az]{9}E.[a-z][a-z][a-z]\|\w{9}7.以下哪些函数能用来验证字符串的完整性?(三选)B.sha1()C.str_rot13()D.crypt()E.crc32()8.哪个 PHP 函数与以下脚本在 UNIX 系统下执行的效果近似?function my_funct ($filename){$f = file_get_contents ($filename);return explode ("\n", $f);}>A.fopen()B.fread()C.flock()D.split_string()E.file()9.基于指定的式样(pattern)把一个字符串分隔开并放入数组,以下哪些函数能做到?(双选)A.preg_split()B.ereg()C.str_split()D.explode()10.以下脚本输出什么?echo 'Testing ' . 1 + 2 . '45';>A.Testing 1245B.Testing 345C.Testing 1+245D.245E.什么都没有11.以下脚本输出什么?$s = '12345';$s[$s[1]] = '2';echo $s;>A.12345B.12245C.22345D.11345E.Array12.方框中的正则表达式能与以下哪些选项匹配?(双选)/.*\*123\d/A.******123B.*****_1234C.******1234D._*1234E._*12313.以下哪个比较将返回 true?(双选)A.’1top’ == ’1′B.’top’ == 0C.’top’ === 0D.’a’ == aE.123 == ’123′14.如果用+操作符把一个字符串和一个整型数字相加,结果将怎样?A.解释器输出一个类型错误B.字符串将被转换成数字,再与整型数字相加C.字符串将被丢弃,只保留整型数字D.字符串和整型数字将连接成一个新字符串E.整形数字将被丢弃,而保留字符串15.考虑如下脚本。
假设 能被访问,脚本将输出什么?$s = file_get_contents ("");strip_tags ($s, array ('p'));echo count ($s);>A. 的主页的字符数B.剔除标签后的 主页的字符数C.1D.0E.剔除以外的标签后的 主页的字符数16.哪个函数能不区分大小写得对两个字符串进行二进制比对?A.strcmp()B.stricmp()C.strcasecmp()D.stristr()E.以上都不能17.以下哪些函数能把字符串里存储的二进制数据转化成十六进制?(双选)A.encode_hex()B.pack()C.hex2bin()D.bin2hex()E.printf()18.哪个函数能用来确保一个字符串的字符数总是大于一个指定值?答案:____________19.以下脚本输出什么?$a = 'able osts indy';echo wordwrap ($a, 1, "c", false);>答案:____________20.以下脚本输出什么?$x = 'apple';echo substr_replace ($x, 'x', 1, 2);>A.xB.axleC.axxleD.applexE.xapple答案1. substr 函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。
那么$alpha{$val}和$alpha{$val+1}是仅有的两个可能输出题目要求的字符串的选项。
因为 0 是数组的第一个索引,所以答案是 D。
2.除了 A 以外的选项都能输出题目要求的字符串。
PHP 中,加号(+)不能把两个字符串合并成一个。
3. substr 函数返回字符串的一部分,而 strpos 函数擅长从一个字符串中找出某个指定的子串。
同时使用这两个函数将满足题目要求。
注意,前一个函数从 0 开始索引,而后者不是,因此需要+1。
答案是 D。
4.答案是 D。
explode 函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的数组。
strtok 函数也可以做同样的事,但需要多次调用。
5.答案是 D。
strcmp()提供了安全的字符串比较机制。
注意,选项 C 是错的,strcasecmp()不是一个“万能”函数,因为它不区分大小写。
6.选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项 A 和 E仍然能勉强匹配。
选项 A 太普通了,它能够匹配任何字符串,因此答案是 E。
7.正确答案是 A,B 和 E。
用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很低。
crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
8. file 函数将文件的文本内容读入一个数组,每个元素是一行。
因此答案 E 正确。
也许你想知道为什么要把这样一个题目放在讲字符串的章节中,那是为了提醒你每一章的题目所包含的知识点并不是绝对严格区分开的,正如写 PHP 脚本时,file 函数不能脱离字符串函数单独存在一样。
9.尽管条件不同,但 preg_split 和 explode 函数都能满足题目要求。
ereg()拿一个正则表达式匹配一个字符串;str_split()按固定长度分隔字符串;而 chop()则是 rtrim()别名,用来移除字符串末尾处的空格。
10.本题考察你对字符串操作及操作符优先级的认识。
连接运算符(.)的优先级比加号(+)高。
因此 PHP 解释器实际执行的运算可以表示为(‘Testing ‘ . 1) +(2 . ’45′)。
由于字符串test 1 不是数字,所以加号前面的运算等于 0。
加号后面的运算等于 245,PHP 输出的结果是 0+245,等于 245,所以答案是 D。
11.可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个字符($s[1])替换成了字符 2,最终将输出 12245。
答案是 B。
12.本题的要点是理解这个正则表达式的含义——从左往右,首先是零个或多个任意字符(.*),跟着是一个星号(\*),然后是 123,最后是一个数字。
因此答案是 C 和 D。
13.B 和 E 正确。
选项 B 中,在比较时,字符串 top 等同于数字 0。
==操作符不比对数据类型,所以将返回 true。
答案 E 中,字符串 123 等同于数字 123,比较将返回 true。
14.字符串将被转换成数字(如果无法发生转换就是 0),然后与整型数字相加。
答案是 B。
15.代码的本意是剔除 主页上除了 p 以外的的所有 HTML 标签。
可实际上,在代码的最后一行使用了 count 函数,它统计变量中的元素数量,而不是字符串中的字符数。
由于字符串是标量,对字符串使用 count 函数将永远返回 1。
答案是 C。
16.题目其实就是在描述 strcasecmp 函数的作用,因此答案是 C。
17.正确答案是 B 和 D。
pack 函数能对二进制数据进行复杂的格式化,包括将字符串中的字符转化成十六进制表示。
bin2hex 函数也有同样的转化功能。
注意,printf()能将整数转化成十六进制数,但无法转化字符串。
18.这是在说 str_pad 函数,它可以把字符串填充到指定长度。
19.脚本将输出 ablecostscindy。
wordwrap 函数通常用来把字符串切割成指定长度。
然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为false,因此函数不会从单词的中间进行切割)。
填充字符串是 c,等于把每个空格都换成了 c。
20.substr_replace 函数是用一个指定字符串替换原字符串中的某个部分,因此脚本输出axle,答案是 B。
文件操作你可能觉得PHP的文件操作功能并不怎样,但实际上它对开发者来说非常有用。
即使你是做网站开发的,学会相关技能也能让你如虎添翼。
多亏了流包装器(stream wrappers,将在第十章详细介绍),PHP才能够打开并读取远程文件,让在本地使用第三方网站的内容变得可能。
站在更底层的角度,文件输入/输出能完成多种任务。
可以用他读取预制文件的内容,比如第三方提供的内容;或者通过PHP脚本让浏览器打开一个二进制文件,使得你能更切实的控制它。
无论如何,本章不仅考验你打开、关闭和读取文件的能力,还考查多进程下进行文件操作的基础知识——例如文件锁。