php面试题宝典

$url = 'https://www.baidu.com/sd/index.php?s=12';
        $filename = parse_url($url);
        vp($filename);
        /**
         * array(3) {
              ["scheme"]=>
              string(5) "https"
              ["host"]=>
              string(13) "www.baidu.com"
              ["path"]=>
              string(15) "/index.php/s/12"
            }
         */
        $file = basename($filename['path']);//得到非参数的文件名
        vp(explode('.',$file)[1]);
        $html = ' <title>Bootstrap 模板</title>
      <!--网站描述信息-->
      <meta name="description" content="web小黑IT-专注于php、前端、C++等技术分享与个人学习路程" />
      <!--关键词-->
      <meta name="keywords" content="php, web前端, C++, 算法, Bootstrap, jQuery, layui, 汇编程序设计, python" />
      <!--指定检索信息-->
      <meta name="robots" content="index,follow" />
      <!--作者-->
      <meta name="author" content="webcyh<[email protected]>">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">';
      $rst = strip_tags($html,array('meta'));
      p($rst);
      p(count($rst));//count计算字符串时候永远都是返回1
      //如果一个脚本无法正确识别另一个存在在另一个平台上的文件的行结尾时候 php.ini中可以通过设置auto_detect_line_endings 来实现但系统保存文件的时候可以自动检测结束类型的目的 
      //要限制脚本只能访问一个指定的文件夹可以用open_basedir指定允许的文件夹
      

      //下面看一个例子
      $filepath = MI.'\Controller\face.txt';
      touch($filepath,0777);

      $file  = fopen($filepath,'w');
      fwrite($file,'这是一个测试');
      fclose($file);
      //判断文件是否存在
      p($filepath);
      p(file_exists($filepath));//返回1
      //删除该文件
    //  unlink($filepath);
      //这里可能出现问题就是删除该文件后下面的函数仍然输出1
      //这是因为php会缓存某些文件系统函数的返回值 解决方法
      //clearstatcache()清理缓存
      p(file_exists($filepath));//返回1
      //写一个函数来解决多线程同时读写一个文件的问题
      $fp = fopen($filepath);
      if(flock($fp,LOCK_EX)){//进行排他型锁定
          fwrite($fp,'这是一个测试');
          flock($fp,LOCK_UN);//释放锁定
      }else{
          p('不能锁定文件');
      }
      fclose($fp);

      //上传的文件当中的size值的单位为B(上传之前先确保在php.ini当中已经打开文件上传功能 默认上传的文件大小为2MB 设置file_upload_max)
      //这些文件在脚本执行期间保存在制定的临时文件夹当中 为了确保当前操作的文件是正确的方法有:
      //is_upload_file确定该文件是通过http方式传输的
      //move_upload_file将文件移动到安全的位置
      
     
      //file_get_content 可以使用context设置超时时间
      //file可以安全的读取二进制文件
      //在没有上传文件的时候$_FILES的值为NULL
      //fputs用于上传 写入字符串到文件当中 不能下载ftp文件
      //readfile()用于输出文件 输出成功显示字节数 否则为false
      //
      //
      //注意php配置文件当中的open_basedir的使用
      //当设置为/dir/user时候 客户端可以访问
      // /dir/user 和 /dir/user1 也就是说这个限定的是前缀 如果指定在某一个目录下可以使用/dir/user/ 必须加斜杠
      // register_global 为on 的时候将用户传递过来的参数当做全局变量来使用 如果为off这些参数只能到指定数组去取出来 比如post数组 get数组 files数组当中
      //disable_function可以限制某些函数的使用 为了保证服务器的安全应该将这些函数放在disable_function当中或者打开save_mode安全模式
      

      //文件操作函数
      //chown()
      //copy()、unlink、dirname、fclose、file(返回文件数组)、file_get_contents、fopen、fread(根据指定的读取大小读取)、filesize、filetype、fwrite、is_dir
      //
      //fstat基于文件指针工作
      //stat基于路径工作
      //
      //读取文件内容
      //while(!feof($fp)){
      //    echo fgets($fp);//读取行 
      //}
      //fseek(0,SEEK_SET) 
      //文件开头
      //CUR当前位置
      //END尾部位置
      //函数可以移动文件指针在文件中的定位
      //
      //关于文件之间的竞争
      //flock是协议锁定机制 即所有访问次文件的线程必须使用flock否则还是存在文件竞争
      //fopen打开的临时文件也不能保证不竞争
      //创建的临时目录也出现竞争
      //mkdir这样可以保证任何时刻 只有一个进程能处理这个文件夹保证操作的原子性
      //
      //
      //header函数主要功能
      //跳转功能 header('Location://www.baidu.com/')
      //
      //指定网页内容 header('Content-type:application/xml')告诉网页这个是xml格式来解析内容分 如果为header('Content-type:text/xml')会当中纯文本来解析
      //
      //指定文件为附件
      //header('Content-Disposition:attachment;filename="downloaded.pdf');这时候访问该网页会直接下载该文件到本地

猜你喜欢

转载自www.cnblogs.com/webcyh/p/11541499.html