php提前判断远程文件是否可用

 更新时间:2016年11月25日 16:24  点击:2214
我们利用了php curl相关函数来访问远程文件,然后根据返回状态来判断文件是否可以正常使用,有需要的朋友可以参考一下
 代码如下 复制代码

//判断远程文件
function check_remote_file_exists($url)
{
$curl = curl_init($url);
// 不取回数据
curl_setopt($curl, CURLOPT_NOBODY, true);
// 发送请求
$result = curl_exec($curl);
$found = false;
// 如果请求没有发送失败
if ($result !== false) {
// 再检查http响应码是否为200
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$found = true;
}
}
curl_close($curl);

return $found;
}

方法二

 

 代码如下 复制代码
<?php
$url = "/upload/201110/20111008192257383.gif";
$array = get_headers($url,1);
if(preg_match('/200/',$array[0])){
echo "<pre/>";
print_r($array);
}else{
echo "无效url资源!";
}
一个朋友写的一款目录查找程序,可以根据用户输入的目录名称查到到指定目录或文件,同时还支持锁定目录哦,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php
class Finder{
 private $key;
 private $result;
 private $previewLen = 50;
 private $file_type = array('html','php','htm','txt');

 function __construct($key){
  $this->key = $key;
 }

 function find($folder){
  $this->result = array();
  
  if(is_array($folder)){
   foreach($folder as $f){
    $this->_find_in_folder($f);
   }
  }else{
   $this->_find_in_folder($folder, true);
  }

  return $this->result;
 }
 
 function _find_in_folder($folder,$bSub=false){
  foreach(glob($folder.DIRECTORY_SEPARATOR.'*') as $f){
   if (is_file($f)){
    $extend =explode("." , $f);
    $type = strtolower(end($extend));
    if(in_array($type,$this->file_type)){
     $fd = file_get_contents($f);
     $pos = strpos($fd,$this->key);
     if($pos!==false){
      $end = $pre = '...';
      $pos -= floor($this->previewLen/2);
      if($pos<0){
       $pre = '';
       $pos = 0;
      }

      $findata = substr($fd,$pos,$this->previewLen);
      $findata = str_replace($this->key,'<span style="color:red">'.$this->key.'</span>',$findata);
      $this->result[] = array('path'=>$f,'preview'=>$pre.$findata.$end);
     }
    }
    continue;
   }

   if($bSub && is_dir($f)){
    $this->_find_in_folder($f,true);
   }
  }
 }
 
}

$cur_path = dirname(__FILE__);
if(isset($_GET['a'])){
 $key = $_POST['key'];
 if(!$key) die('关键字不能为空');

 $cf = new Finder($key);

 $in_folder = array();
 $limit_folder = $_POST['limit_folder'];
 if($limit_folder==1){
  if(!isset($_POST['folder']) || !$_POST['folder']) die('限定目录不能为空');
  $in_folder = $_POST['folder'];
  $ret = $cf->find($in_folder);
 }else{
  $ret = $cf->find($cur_path);
 }

 echo "搜索[$key]结果:<br />";
 if(!$ret) die('无');
 foreach($ret as $p=>$f){
  echo "$p. t$f[path] => $f[preview] <br />n";
 }
 exit(); 
}

$folder = array();
function readFolder($path){
 global $folder;
 $folder[] = $path;
 foreach(glob($path.DIRECTORY_SEPARATOR.'*') as $f){
  if (is_dir($f)) {
   readFolder($f);
  }
 }
}

readFolder($cur_path);
$folder_op = array();
foreach($folder as $path){
 $folder_op[] = "<option value="$path">$path</option>";
}
$folder_op = implode($folder_op);
?>
<form action="?a=do" method="post">
搜索关键字:<input type="text" name="key" value=""><br />
搜索目录:<select name="folder[]" multiple="true"><?php echo $folder_op ?></select><br />
是否限定以上选择的目录:<input type="radio" name="limit_folder" value="1" />是 <input type="radio" name="limit_folder" value="0" checked="true" />否
<input type="submit" value="搜索" />
</form>

=

今天介绍一下关于json数据解析,我们使用Android中的JSONObject和JSONArray解析json数据,有android开发的朋友可以参考一下。

       String strJson = "{"students":[{"name":"Jack","age":12}, {"name":"Vista","age":23}, {"name":"Kaka","age":22}, {"name":"Hony","age":31}]}";
        try {
            JSONObject jo = new JSONObject(strJson);
            JSONArray jsonArray = (JSONArray) jo.get("students");
            for (int i = 0; i < jsonArray.length(); ++i) {
                JSONObject o = (JSONObject) jsonArray.get(i);
                System.out.println("name:" + o.getString("name") + "," + "age:"
                        + o.getInt("age"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

 

2.使用gson中的JsonReader解析json数据

try {
            String string = "{"class":1, "students":[{"name":"jack", "age":21},{"name":"kaka", "age":21},{"name":"lucy", "age":21}]}";
            StringReader sr = new StringReader(string);
            JsonReader jr = new JsonReader(sr);
            jr.beginObject();
            if (jr.nextName().contains("class")) {
                System.out.println("班级: " + jr.nextString());
                if (jr.nextName().equals("students")) {
                    jr.beginArray();
                    while (jr.hasNext()) {
                        jr.beginObject();
                        if (jr.nextName().equals("name"))
                            System.out.print("姓名:" + jr.nextString());
                        if (jr.nextName().equals("age")) {
                            System.out.println(" , 年龄:" + jr.nextInt());
                        }
                        jr.endObject();
                    }
                    jr.endArray();
                }
            }
            jr.endObject();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


Json解析库gson: http://code.google.com/p/google-gson/

PHP写入文本文件和C语言非常类似,用的函数也一致,读取文件用fopen,写入文件用fwrite,结束用fclose。要注意的是打开并写入新的文件用\"w\"标识,读取文件用\"r\"标识,在原有文件上继续写入用\"a\"标识

,同时windows换行符是"rn",linux换行符是"n"
    PHP记录IP的函数是 $_SERVER["REMOTE_ADDR"]

    PHP获取当前时间函数date("Y-m-d H:i:s", time())

    PHP获取来路网址函数$_SERVER['HTTP_REFERER'] 首先要判断其是否为空值,即用isset进行判断,比如我们直接从浏览器敲入网址则不会有来路网址记录,最后代码很简单,如下:

 代码如下 复制代码

$ip = $_SERVER["REMOTE_ADDR"];
$time = date("Y-m-d H:i:s", time());
$from = '';
if(isset($_SERVER['HTTP_REFERER']))
{
   $from = $_SERVER['HTTP_REFERER'];
}
$myfile = 'wtndata/statistic.txt';
$str = "ip='".$ip."' from='".$from."' time='".$time."'rn";
$file_pointer = fopen($myfile,"a");
fwrite($file_pointer,$str);
fclose($file_pointer);

大多数流行的 Web 服务如 twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等
 代码如下 复制代码
$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} ';
$obj=json_decode($json_string);
echo $obj->name;
//prints foo echo $obj->interest[1]; //prints php
[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07