当前位置:Gxlcms > PHP教程 > 透过面试题目学习php之填空题

透过面试题目学习php之填空题

时间:2021-07-01 10:21:17 帮助过:27人阅读

通过面试题目学习php之填空题

1、? 判断一个变量是否存在的函数:isset

判断一个变量是否为null的函数is_null

判断一个变量是否为空的函数empty

销毁一个变量的函数unset

2$a =array(1,2);unset($a[0]);print_r($a);echo count($a);请写出输出结果:

答:array(1=>2) ?; ?1

3$str = '2012/12/21';

echoereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\1/\\2/\\3",$str);

请写出输出结果'2012/12/21'

4$a = "aaa"; $b ="bbb";$c = "$a$b";$c = $a.$b;请问①和②谁执行的更快?

答:②

5打印一个用‘.’链接的字符串时候,还可以用什么代替‘.’链接效率更高些?

答:可以用‘,’代替‘.’。‘,’效率更高。

6函数strpos的原型为:int strpos(string haystack,stringneedle [,int offset])

用来从haystack中查找needle,如果找到返回needlehaystack的偏移,否则返回false。问:如何区分strpos返回false和返回0

答:采用绝对等于进行判断。==是不判断二者是否是同一数据类型,而===是更为严格的比较,它不但要求二者值相等,而且还要求它们的数据类型也相同。

7请列出您所知道的php模版对象

答:smarty,常见的还有PHPLib,FastTemplate,Savant

8请写出pHp脚本中执行SHELL命令的方法,要求至少写两种。

答:①string? exec(stringcommand[,array output[,int return_var]])它返回输出的最后一行,还可以通过可选参数outputexec指定的命令结束时的每一行输出。

??String? systemString command[,int return_var])直接将命令输出返回给调用者。

??void ?passthru(String command[,int returan_var])向调用者返回二进制输出。

??string ?shell_exec ( string $cmd )将字符串当做shell命令来执行,并返回所有输出。

??resource ?popen ( string $command , string $mode ) 打开一个指向进程的管道,该进程由派生指定的 command 命令执行而产生。

9请写出pHp变量序列化和反序列化的函数,并举出1个应用例子

答:serialize()/unserialize().

10WWW应用的pHp程序中,如何捕捉页面缓存的输出?

答:ob_start() ;打开缓存区,将已载入的内容加载到缓存区。
ob_get_contents();
获取缓存区内容,经典用法 $str=ob_get_contents();

Ob_clean();仅仅清空缓冲区中的内容;
ob_end_clean();
清除缓冲区中缓存内容,并关闭输出缓冲区。

ob_start() 函数出现后开始所有的输出内容将被缓存,不被输出,直到出现 ob_end_clean() 函数。ob_end_clean()以后输出内容不再被缓存而且把以前的缓存内容清空掉。所以为了使用刚刚缓存了的内容必须在ob_end_clean()函数出现之前使用 ob_get_contents() 函数提取已经缓存了的内容。

ob_clean()ob_end_clean()有什么区别呢?

ob_clean 只是清除缓冲区中的内容.ob_end_cleanob_clean多做一些事情.就是关闭缓冲区.

ob_flush();刷新缓存区,将缓冲区内容输出;

ob_get_length();返回缓冲区中缓存内容的长度。

ob_get_clean();获取当前缓冲区中的内容,并删除输出缓冲区。

11执行第一段代码,你觉得结果可能是多少?

???????? $a = array(1,2);

???????? $b = array(3,4);

???????? var_dump($a+$b);

再执行第二段代码,结果又是多少呢?

???????? $a = array(1,2);

???????? $b = array('2'=>3,'3'=>4);

???????? var_dump($a+$b);

答:第一段代码结果是array([0]=>1,[1]=>2);

???????? 第二段代码结果是 array([0]=>1,[1]=>2,[2]=>3,[3]=>4);

???????? 这是因为php对数组相加的处理是当$a+$b时,如果$b数组中有与$a数组中不同的键,则把$b不同的数组项附加到$a数组中,并返回这个数组.

???????? 你可能会想到既然有加,是不是会有减呢,很抱歉,减是不可以的,无法通过语法检查

12echo 3|4;请问输出:

答:7

13echo count('12asssss');

答:1

14PHP打印出前一天的时间格式是2006-5-10 22:21:21

答:echo date(‘Y-n-d H:i:s’, strtotime(‘-1 day’));

15使用哪些工具进行版本控制?

:cvs,svn,vss;

16、如何实现字符串翻转?

答:stringstrrev( string$string )---php内置字符串反转函数。

function str_strrev($str)

{

??? $len=strlen($str);

??? $newstr = "";

??? for($i=$len;$i>=0;--$i)

??? {

?????? $newstr .= $str[$i];

??? }

??? return $newstr;

}

17MYSQL取得当前时间的函数是?,格式化日期的函数是

答:①curtime()/current_time()—返回当前时间

???????? curdate()/current_date()—返回当前日期

???????? now()—返回函数执行时的时间日期

???????? sysdate()—返回当时实时的时间。

uninx_timestamp()—返回当前时间日期的unix时间戳。

Date_format(date,format)—格式化日期的函数

18、用PHP写出显示客户端IP与服务器IP的代码?

答:function get_client_ip(){

??? if(getenv('HTTP_CLIENT_IP')){

??????? $client_ip = getenv('HTTP_CLIENT_IP');

??? } elseif(getenv('HTTP_X_FORWARDED_FOR')) {

??????? $client_ip = getenv('HTTP_X_FORWARDED_FOR');

??? } elseif(getenv('REMOTE_ADDR')) {

??????? $client_ip = getenv('REMOTE_ADDR');

??? } else {

??????? $client_ip = $_SERVER['REMOTE_ADDR'];

??? }

??? return $client_ip;

}

1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址
2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关
3.HTTP_CLIENT_IP:客户端的ip

PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址。但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意,并不是每个代理服务器都能用$_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP

PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。不过要注意的事,并不是每个代理服务器都能用$_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP

服务器端IP相关的变量

1. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。(gethostbyname($_SERVER["SERVER_NAME"]);

2. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.confBindAddress的设置值相关)。在客户端测试结果正确。

19、如何修改SESSION的生存时间

:①修改php.ini中的session.gc_maxlifetime(After this number of seconds, stored data willbe seen as 'garbage' and cleaned up by the garbage collection process.),然后重启apache(注意:即使设置了垃圾回收的有效时间,但是能够触发垃圾回收器还存在一定的概率。session.gc_probability = 1(启动垃圾回收进程的几率);session.gc_divisor = 1000(启动垃圾回收进程几率因子,当前为千分之几); Define the probability that the'garbage collection' process is started. on every session initialization. Theprobability is calculated by using gc_probability/gc_divisor, e.g. 1/100 meansthere is a 1% chance that the GC process starts on each request.每次请求触发垃圾回收进程的几率)

②通过string session_save_path([ string $path ] )设置存储session文件的路径session_set_cookie_params(ini$lifetime,…)设置session回话cookie的有关参数(主要是session的生存周期),并且仅仅对当前执行php脚本有效。因此,如果对其他脚本设置,需要在启动session_start前调用该函数。

③通过setcookie()函数设置存储session_id信息的cookie生存周期,来控制session的生存周期,如下:setcookie(session_name(),session_id(),time()+N)

20、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?

:①采用file_get_contents:

$url =" http://www.phpres.com/index.html";

$contents= file_get_contents($url);

②采用curl

$url =" http://www.phpres.com/index.html";

$ch =curl_init();

$timeout= 5;

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, $timeout);

//在需要用户检测的网页里需要增加下面两行

//curl_setopt($ch,CURLOPT_HTTPAUTH, CURLAUTH_ANY);

//curl_setopt($ch,CURLOPT_USERPWD, US_NAME.":".US_PWD);

$contents= curl_exec($ch);

curl_close($ch);

echo$contents;

③采用fopen->fread->fclose

$url =" http://www.phpres.com/index.html";

$handle =fopen ($url, "rb");

$contents= "";

do {

$data =fread($handle, 1024);

if(strlen($data) == 0) {

break;

}

$contents.= $data;

}while(true);

fclose($handle);

echo$contents;

21、在PHP中,heredoc是一种特殊的字符串,它的注意事项有?

答:①开始和结束标示符必须相同,且标示符必须完全由字母数字字符和下划线组成,而且不能以数字和下划线开头。

②开始标示符前面必须有三个左尖括号:<<<

heredoc语法与双引号界定的字符串遵循相同的解析规则。即,变量和转义序列都将得到解析。唯一的区别是:此处的双引号不需要转义。

④结束符必须在一行的开始处,而且前面不能有空格或任何其他多余的字符。此外,开始和结束标示符后面的任何空格都会导致语法错误。

22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)

答:SELECT username FROM members GROUP BY id ORDER BY COUNT(id) DESC limit0,10;

23、在PHPerror_reporting这个函数有什么作用?

答:设置错误报告的级别。该参数可以是一个任意的表示二进制位字段的整数,或者常数名称。

24、请写一个函数验证电子邮件的格式是否正确

答:/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/

25、简述如何得到当前执行脚本路径,包括所得到参数。

答:$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF].’?’.$_SERVER[QUERY_STRING];

26JS表单弹出对话框函数是?获得输入焦点函数是?

答:弹出对话框: alert(),prompt(),confirm()

获得输入焦点 focus()

27JS的转向函数是?怎么引入一个外部JS文件?

:window.location.href;

??

人气教程排行