>  기사  >  php教程  >  PHP基础面试题

PHP基础面试题

WBOY
WBOY원래의
2016-07-21 14:52:59981검색

  一、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地址

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:初探PHP多进程다음 기사:PHP加密解密类