PHP学习_七道PHP经典面试题(附答案)

2021-05-27 0 989 百度已收录

本篇文章向大师介绍七道PHP典范口试题(附谜底),有必定的参考代价,有需求的冤家能够参考一下,但愿对于大师有所协助。

1.兼并两个数组有多少种体式格局,试比拟它们的异同

体式格局:

一、array_merge()

二、’+’

三、array_merge_recursive

异同:

array_merge 复杂的兼并数组

array_merge_recursive 兼并两个数组,假如数组中有完整同样的数据,将它们递归兼并

array_combine 以及 ‘+’ :兼并两个数组,前者的值作为新数组的键

2.请写一个函数来反省用户提交的数据能否为整数(没有辨别数据范例,能够为二进制、八进制、十进制、十六进制数字)

答:实在次要仍是 is_int 以及 floor 这个办法

if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){  
    echo "没有是整数";  
}else{  
    echo "是整数";  
}

3.PHP 的 strtolower () 以及 strtoupper () 函数正在装置非中文零碎的效劳器下能够会招致将汉字转换为乱码,请写两个替换的函数完成兼容 Unicode 笔墨的字符串巨细写转换

答:缘由是:中文是由多字节构成的,而只要英文零碎的单个英笔墨符只要一个字节,以是该零碎把中文的每个字节都做了 strtolower () 处置,改动后的中笔墨节拼接正在一同就成为了乱码(重生成的编码映照对于应的字符能够就没有是中文了)

手动处理:用 str_split (string string,intstring,intsplit_length = 1) 按每一个字节切割,像中文能切割成三个字节。对于辨认到的字节如果英笔墨母则停止转换。

<?php  
function mystrtoupper($a){  
    $b = str_split($a, 1);  
    $r = '';  
    foreach($b as $v){  
        $v = ord($v);  
        if($v >= 97 && $v<= 122){  
            $v -= 32;  
        }  
        $r .= chr($v);  
    }  
    return $r;  
}  
$a = 'a中你持续F@#$%^&*(BMDJFDoalsdkfjasl';  
echo 'origin string:'.$a." ";  
echo 'result string:';  
$r = mystrtoupper($a);  
var_dump($r);

4.PHP 的 is_writeable () 函数存正在 Bug,没法精确判别一个目次 / 文件能否可写,请写一个函数来判别目次 / 文件能否相对可写

答:此中 bug 存正在两个方面,

一、正在 windowns 中,当文件只要只读属性时,is_writeable () 函数才前往 false,当前往 true 时,该文件纷歧定是可写的。

假如是目次,正在目次中新建文件并经过翻开文件来判别;

假如是文件,能够经过翻开文件(fopen),来测试文件能否可写。

二、正在 Unix 中,当 php 设置装备摆设文件中开启 safe_mode 时 (safe_mode=on),is_writeable () 异样不成用。

读取设置装备摆设文件能否 safe_mode 能否开启。

/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really can't write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access   private
* @return   void
*/
if ( ! function_exists('is_really_writable'))
{
    function is_really_writable($file){
    // If we're on a Unix server with safe_mode off we call is_writable
    if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE){
        return is_writable($file);
    }
    // For windows servers and safe_mode "on" installations we'll actually
    // write a file then read it. Bah...
    if (is_dir($file)){
        $file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));
        if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE){
            return FALSE;
        }
        fclose($fp);
        @chmod($file, DIR_WRITE_MODE);
        @unlink($file);
        return TRUE;
    } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
        return FALSE;
    }
    fclose($fp);
    return TRUE;
    }
}

5.PHP 的 chmod () 函数存正在 Bug,没法包管配置成功,请写一个函数正在指定途径下创立一个目次 / 文件并确保能够精确配置权限掩码

答:我也找没有到谜底

6.PHP 处置上传文件信息数组中的文件范例 $_FILES [‘type’] 由客户端阅读器供给,有能够是黑客假造的信息,请写一个函数来确保用户上传的图象文件范例实在牢靠

答:用 getimagesize 来判别上传图片的范例比 $_FILES 函数的 type 更牢靠

统一个文件,运用差别的阅读器 php 前往的 type 范例是纷歧样的,由阅读器供给 type 范例的话,

就有能够被黑客应用向效劳器提交一个假装撑图片后缀的可履行文件。

能够经过 getimagesize () 函数来判别上传的文件范例,假如是头像文件 会前往如许的一个数组

Array(
    [0] => 331
    [1] => 234
    [2] => 3
    [3] => width="331" height="234"
    [bits] => 8
    [mime] => image/png

);

假如经过 getimagesize () 函数前往的是如许的一个数组 说明上传的是头像文件。此中索引为 2 的透露表现范例

1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 =JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM,

你能够经过这个再去限定上传的头像范例

<?php
    $file=$_FILES['file'];
    if(!empty($file))
    {
       var_dump($file);
       var_dump(getimagesize($file["tmp_name"]));
    }   
?>

7.PHP 经过对于数据的 URL 编码来完成与 Javascript 的数据交互,可是关于局部非凡字符的编解码与 Javascript 的划定规矩没有尽相反,请详细说明这类差别,并针对于 UTF-8 字符集的数据,写出 PHP 的编解码函数以及 Javascript 的编解码函数,确保 PHP 编码数据能够被 Javascript 精确解码 、Javascript 编码的数据能够被 PHP 精确解码

答:

<?php
 $str = '思源博客siyuantlw/tlw/sy/俺只是一个打酱油的';
 $str = iconv("GB2312",'UTF-8',$str);
 $str = urlencode($str); 
?>

//js decodeURIComponent 貌似对于 GB2312 编码的格局没有辨认,必需转为 utf-8 才能够,而后,假如字符串中有空格的 就转为 + 号了

<html>
 <script>
  var ds = '<?php echo $str;?>';
  var dddd= decodeURIComponent (ds);
  alert(dddd);
 </script>
</html>

以上便是七道PHP典范口试题(附谜底)的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 PHP教程 PHP学习_七道PHP经典面试题(附答案) https://www.kubayi.com/5448.html

常见问题

相关文章

评论
暂无评论