关键词搜索

源码搜索 ×
×

php面试题(四)附答案

发布2019-07-18浏览1224次

详情内容

1.禁用COOKIE 后 SEESION 还能用吗?
可以通过url get方式使用
2.抓取远程图片到本地,你会用什么函数?
file_get_contents 或者 curl
3.简述POST 和GET传输的最大容量分别是多少?
POST 根据你php.ini文件配置(默认是8M) GET的话 大小限制在2KB
4.用最少的代码写一个求3值最大值的函数.
m a x = m a x ( max = max( max=max(a ,$b $c);
5.用PHP打印出前一天的时间,打印格式是2019年7月18日 21:17:21
echo date(‘Y-m-d H:i:s’, strtotime(’-1 day’));
6.PHP代码如下:
$a=“hello”;
KaTeX parse error: Expected 'EOF', got '&' at position 3: b=&̲a;
unset($b);
$b=“world”;
echo $a;
其结果是

hello
7.PHP代码如下:
s t r = " c d " ; str="cd"; str="cd";str=“landog”;
$$str.=“ok”;
echo c d ; 其 结 果 是 ? ∗ ∗ l a n d o g o k ∗ ∗ 8. 用 P H P 写 一 段 代 码 , 实 现 不 使 用 第 3 个 变 量 , 交 换 cd; 其结果是?** landogok **8.用PHP写一段代码,实现不使用第3个变量,交换 cd;landogok8.PHP使3a、 b 的 值 , b的值, ba、$b的初始值自己定。

$a = "abcd";
$b = "1234";
echo "初始化时 a=$a,b=$b<br>";
$a = $a . $b;
$b = strlen( $b );
$b = substr( $a, 0, (strlen($a) - $b ) );
$a = substr( $a, strlen($b) );
echo "交换后 a=$a,b=$b<br>";

    9. javascript能否定义二维数组,如果不能你如何解决?
    arr[0] = new array()
    10. 假设a.html和b.html在同一个文件夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html。

    <script>
    function go2b(){
    window.location = "b.html";
    window.close();
    }
    setTimeout( "go2b()",5000 ); //5秒钟后自动执行go2b()
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    11. 利用CSS样式表定义已访问的超链接字体大小为14pt,颜色为red。
    a:visited { font-size: 14pt; color: red; }
    12. 写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)
    //冒泡排序(数组排序)

    function bubble_sort($array)
    {
    $count = count($array);
    if ($count <= 0) return false;
    for($i=0; $i<$count; $i++){
           for($j=$count-1; $j>$i; $j--){
             if ($array[$j] < $array[$j-1]){
                $tmp = $array[$j];
                $array[$j] = $array[$j-1];
                $array[$j-1] = $tmp;
             }
           }
    }
    return $array;
    }
    
      9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    //快速排序(数组排序)

    function quicksort($array) {
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i<count($array); $i++){
           if ($array[$i] <= $key)
             $left_arr[] = $array[$i];
           else
             $right_arr[] = $array[$i];
    }
    $left_arr = quicksort($left_arr);
    $right_arr = quicksort($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
    }
    
      9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    13.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。假设每个中文也是一个字符,普通的数字、符号、字母也是一个字符。(提示:GB编码的中文字符高位范围是 0x81-0xFE )
    /**

    • 截取字符串子串 (1)(GBK)
    • @param string $str 原始字符串
    • @param int $len 需要截取字符串的长度
    • @return string 返回截取到的字符串
      */
    unction GBSubstr($str, $len){
    $count = 0;
    for($i=0; $i<strlen($str); $i++){
    if($count == $len) break;
    if(preg_match("/[\x80-\xff]/", substr($str, $i, 1))) ++$i;
    ++$count;      
    }
    return substr($str, 0, $i);
    }
    
      9

    /**

    • 截取字符串子串函数(2)(GB)
    • @param string $src 源字符串
    • @param int $start 开始截取的位置
    • @param int $length 需要截取字符串的长度
    • @return string 返回截取的字符串
      */
    function GBSubstr2($src, $start=0, $length=0){
    $suffix="";
    $len = strlen($src);
    if ( $len <= $length ) return $src;
    
    $cut_length = 0;
    for( $idx = 0; $idx<$length; $idx++){
    $char_value = ord($src[$idx]);
    if ( $char_value < 0x80 || ( $char_value & 0x40 ) )
    $cut_length++;
    else
    $cut_length = $cut_length + 3;
    }
    $curstr = substr($src, 0, $cut_length) ;
    preg_match('/^([\x00-\x7f]|.{3})*/', $curstr, $result);
    return   $result[0];
    }
    
      9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    /**

    • 中文字符串截取(3)(支持GB2312/GBK/UTF-8/BIG5)
    • @param string $str 要截取的字串
    • @param int $start 截取起始位置
    • @param int $length 截取长度
    • @param string $charset 字符串的字符集,包括有 utf-8|gb2312|gbk|big5 编码
    • @param bool $suffix 是否加尾缀
    • @return string 返回接续字符串的结果
      */
    function CSubstr($str, $start=0, $length, $charset="gbk", $suffix=false){
    if(function_exists("mb_substr")){
    return mb_substr($str, $start, $length, $charset);
    }
    $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
    
    preg_match_all($re[$charset], $str, $match);
    $slice = join("", array_slice($match[0], $start, $length));
    
    if($suffix) {
    return $slice ."…";
    }
    return $slice;
    }
    
      9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    13.写出匹配邮箱地址和URL的两个正则表达式。类似下面的:
    邮箱地址:user_name.first@example.com.cn
    URL地址:http://www.example.com.cn/user_profile.php?uid=100
    (提示:使用标准的正则表达式,就是PHP中preg_* 类的正则处理函数能够解析的正则)

    邮箱:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
    URL:/^http:\/\/[\w]+\.[\w]+[\S]*/
    
    
    • 1
    • 2
    • 3

    14.写一个遍历指定目录下所有子目录和子文件的函数(提示:可以使用递归的方法)
    /**

    • 递归的遍历一个指定目录
      */
    function dir_all ( $path ) {
    $handler = opendir($path);
    while (false!==($tmp = readdir($handler))) {
    if(is_dir( "$path/$tmp" )) {
    if ($tmp=="." | $tmp=="..") continue;
    echo $tmp."<br>\n";
    dir_all ("$path/$tmp");
    } else {
    echo $tmp ."<br>\n";
    }
    }
    }
    
      9
    • 10
    • 11
    • 12

    15.MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?
    Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些。

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载