Heim  >  Artikel  >  php教程  >  PHP基础面试题

PHP基础面试题

WBOY
WBOYOriginal
2016-07-21 14:52:59980Durchsuche

  一、PHP中几个输入函数echo, print(), print_r(), printf(), sprintf(), var_dump()的区别。

    1.echo : 是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string);

    2.print : 是语句不是函数, 有返回值1,只能输出一个变量, 不一定需要圆括号,不能输出数组和对象,只能打印简单类型(如int,string);

    3.print_r() :是函数, 可打印复合类型 (如string, int, float, array, object等)输出array时会用结构表示,而且可通过print_r($str,true)来使print_r()不输出而返回print_r处理后的值;

    4.printf() :是函数 把文字格式化后输出,参考C语言

    5.sprintf() : 是函数, 跟printf()相似,但不打印,而是返回格式化的文字(该函数把格式化的字符串写入一个变量,而不是输出出来)其他的与printf一样;

    6.var_dump() :是函数,输出变量的内容、类型或字符串的内容、类型、长度。

  二、禁用cookie的session的使用方案,设置session过期的方法、对应函数:

    1.通过url传值,把session id附加到url上(缺点:整个站点中不能有纯静态页面,因为纯静态页面session id 将无法继续传递到下一个页面);

    2.通过隐藏表单,把session id放到表单的隐藏文本框中同表单一块提交过去(缺点:不适用标签这种直接跳转的非表单的情况);

    3.直接配置php.ini文件, 将php.ini文件里的session.use.trans.sid = 0 设为 1;

    4.用文件、数据库等形式保存session ID,在跨页过程中手动调用;

    1.setCookie(session_name(),session_id(),time()+60,"/");

    2.session_set_cookie_params(60);(把session存入cookie中);

    注意:php.ini 中的session.gc_probability / session.gc_divisor

  三、PHP获取文件内容的方法,对应的函数

    1.file_get_contents()  得到文件的内容(可以以get和post方法获取),整个文件读入一个字符串中;

    2.用fopen() 打开url, 以get 方式获取内容(借助fgets()函数);

    3.用fsockopen函数 打开url (可以以get 和 post 方式获取)以get方式获取完整的数据  包括header 和 body;

    4.使用curl 库获取内容,使用curl库之前,需查看php.ini,查看是否已打开了curl扩展

  四、isset() 、empty()与is_null的区别

    1、当变量未定义时,is_null()和“参数本身”是不允许作为参数判断的,会报Notice警告错误;

    2、empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

    3、isset():仅当null和未定义,返回false;

    4、empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回false;

    5、is_null():仅判断是否为null,未定义 报警告;

    6、变量本身作为参数,与empty()一致,但接受未定义变量时,报警告;

  五、strlen()与mb_strlen的作用与区别

    在PHP中,strlen与mb_strlen是求字符串长度的函数

    PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍(在 UTF-8编码下,一个汉字占3个字节)。
     采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。    
    需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
 
  六、PHP 如何获取客户端的IP地址

    $_SERVER['REMOTE_ADDR'] ;   通过全局数组来获得 

    getenv('REMOTE_ADDR') ; 通过环境变量来获得

    当客户机使用代理的时候获取不到真实的IP地址

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:初探PHP多进程Nächster Artikel:PHP加密解密类