使用php获取网络文件

 更新时间:2016年11月25日 15:17  点击:1728

如何使用PHP获取网络上文件
<!-- generateindex.php -->
<?php
//设置我们将要使用的文件
$srcurl = "http://www.111cn.net/index.php";
$tname = "tindex.html";
$target_name = "index.html";
?>
<HTML>
<HEAD>
<TITLE>
Generating <?php echo("$target_name"); ?>
</TITLE>
</HEAD>
<BODY>
<P>Generating <?php echo("$target_name"); ?>...</P>
<?php
//首先删除上次操作可能遗留下来的临时文件。
//这个过程可能会提示错误,所以我们使用@以防止报错。
@unlink($tname);
//通过一个URL的请求装入动态版本。
//在我们接收到相关内容之前,Web服务器会对PHP进行处理
//(因为本质上我们是在模拟一个Web浏览器),
//所以我们将获得的是一个静态的HTML页面。
//'r'指出我们只要求对这个“文件”进行读操作。
$dpage = fopen($srcurl, 'r');
//处理错误
if (!$npage) {
echo("<P>不能打开静态页面".
"更新失败!</P>");
exit();
}
//将这个URL的内容读入到一个PHP变量中。
//指定我们将读取1MB的数据(超过这个数据量一般是意味着出错了)。
$html_data = fread($dpage, 1024*1024);
//当我们完成工作后,关闭到源“文件”的连接。
fclose($dage);
//打开临时文件(同时在这个过程中建立)以用来写入(注意'w'的用法).
$tempfile = fopen($tname, 'w');
//处理错误
if (!$tempfile) {
echo("<P>不能打开".
"($tname) 并写到静态文件且更新失败".
!</P>");
exit();
}
//将静态页面的数据写入到临时文件中
fwrite($tfile, $htmldata);
//完成写入后,关闭临时文件。
fclose($tfile);
//如果到了这里,我们应该已经成功地写好了一个临时文件,
//现在我们可以用它来覆盖原来的静态页面了。
$ok = copy($tname, $target_name);
//最后删除这个临时文件。
unlink($tname);
?>
<P>静态文件更新成功!</P>
</BODY>
</HTML>

方法很简单,在apache http.conf 里面修改如何代码,重起apache就行了.

    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
   AddType application/x-httpd-php .asp

这是类
<?php
/*========================================================
类名:catalog
功能:无限分级类
方法:
        树形显示分类
        catalog_show($id) //参数$id 递归调用
                流程:找到父分类为0所有根分类-> 一直递归取得所有分类并显示       
        添加分类
                catalog_add($uid,$name) //$uid 父id  //$name 分类名               
                流程:依据$uid,在此id下添加一个新子id
        删除分类
                catalog_del($uid)//参数 $uid 数要删除的分类
        修改分类
                catalog_set($id,$name) //参数 $id 要修改的分类  //参数 $name  新的分类名
变量:
        $config                                //数据库信息-> host,user,pass,dbname
        $catalog_dbname                //分类数据库名
数据库:
        catalog_id                        //分类的自然序号
        catalog_uid                        //分类的父分类
        catalog_name                //分类名
        catalog_path_number        //亲缘树数字形式  0:1:2
        catalog_path_char        //亲缘树字符形式  分类1:分类1.1:分类1.1.1
参照文章 [url]http://www.111cn.net/12823/viewspace_4468.html[/url]
========================================================*/
class catalog{
        var $config;
        var $catalog_dbname;
        var $links;
        private function connect(){
                $this->links = mysql_connect($this->config['host'],$this->config['user'],$this->config['pass']) or die("错误: 第".__LINE__."行<br>".mysql_error());
                mysql_select_db($this->config['dbname'],$this->links);
                mysql_query("SET NAMES gb2312");
        }
       
        function catalog_show($uid = 0){
                $this->connect();
                $sql = "SELECT * FROM ".$this->catalog_dbname. "
                                        WHERE catalog_uid = ". $uid ."
                                                 ORDER BY catalog_id ";
                $result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error());
               
                if(mysql_num_rows($result) > 0){
                        while ($row = mysql_fetch_assoc($result)){       
                                if($this->sun_catalog($row['catalog_id'])){//判断有没有子分类
                                        $cata_img = "<img id = 'img".$row['catalog_id']."' src='./img/last_node.jpg' onclick='click_catalog(".$row['catalog_id'].")'/>";
                                }else{
                                        $cata_img = "<img src='./img/sp.jpg'/>";
                                }
               
                                $path = explode(":",$row['catalog_path_number']);
                                if(count($path) > 1){
                                        for($i=1;$i<count($path);$i++){
                                                $path_img .= "<img src='./img/sp.jpg'/>";
                                        }
                                }
                                echo $path_img.$cata_img;
                                echo "<a class='menu' href = 'javascript:send_id(".$row['catalog_id'].")'>";
                                echo $row['catalog_name']."</a><br>";
                                $path_img = "";
                                if($this->sun_catalog($row['catalog_id'])){                                       
                                        $hidden_div  = "style='display:none'";                                               
                                        echo "<div id = 'div".$row['catalog_id']."' ".$hidden_div.">";                                       
                                        $this->catalog_show($row['catalog_id']);
                                        echo "</div>";
                                }                                               
                        }
                }               
        }
        private function sun_catalog($uid){//判断是否有子分类
                $sql = "SELECT * FROM ".$this->catalog_dbname. "
                                        WHERE catalog_uid = ". $uid ."
                                                 ORDER BY catalog_id ";
                $result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error());
                if(mysql_num_rows($result) > 0){
                        return true;
                }else{
                        return false;
                }
       
        }
        function catalog_add($uid,$name){
                //获取父id的亲缘树
                $this->connect();
                $sql = "SELECT * FROM ".$this->catalog_dbname."
                                         WHERE catalog_id = '".$uid."'";
                $result = mysql_query($sql,$this->links)
                                                or die("错误: 第".__LINE__."行<br>".mysql_error());
                $row = mysql_fetch_assoc($result);
                $fid_path_number = $row['catalog_path_number'];//id的数字亲缘树
                $fid_path_char = $row['catalog_path_char'];//id的字符亲缘树
                //插入数据 先插入行->再找到最新插入的id, 在依据这个id进行修改
                $sql = "INSERT INTO ".$this->catalog_dbname."(catalog_uid,catalog_name)
                                        VALUES(".$uid.",'".$name."')";
                $result = mysql_query($sql,$this->links)
                                                or die("错误: 第".__LINE__."行<br>".mysql_error());
                $catalog_id = mysql_insert_id();//获取自己的id
                $catalog_path_number = $fid_path_number.":".$catalog_id;//得到自己的数字亲缘数
                $catalog_path_char = $fid_path_char.":".$name;//得到自己的字符亲缘数
               
                $sql = "UPDATE '".$this->catalog_dbname."'
                                        SET
                                                catalog_path_number = '".$catalog_path_number."',
                                                catalog_path_char = '".$catalog_path_char."'
                                        WHERE
                                                catalog_id = ".$catalog_id;       
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());       
                       
        }
       
        function catalog_del($id){
                $this->connect();
                $sql = "DELETE FROM ".$this->catalog_dbname."
                                        WHERE catalog_id = ".$id;
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());
        }
        function catalog_set($id,$name){
                $this->connect();
                $sql = "UPDATE ".$this->catalog_dbname."
                                        SET
                                                catalog_name = '".$name."'
                                        WHERE
                                                catalog_id = ".$id;       
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());
               
        }
       
       
}
?>

以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。

  至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。

  下面简单介绍一下PHP的语法。

  1、嵌入方法:

  类似ASP的<%,PHP可以是<?PHP或者是<?,结束符号是?>,当然您也可以自己指定。

  2、引用文件:

  引用文件的方法有两种:require 及 include。
  require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

  include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

  3、注释方法:

  <?PHP
  echo "这是第一种例子。\n" ; // 本例是 C++ 语法的注释
  /* 本例采用多行的
  注释方式 */
  echo "这是第二种例子。\n" ;

echo "这是第三种例子。\n" ; # 本例使用 UNIX Shell 语法注释
  ?>

  4、变量类型:

  $mystring = "我是字符串" ;
  $NewLine = "换行了\n" ;
  $int1 = 38 ;
  $float1 = 1.732 ;
  $float2 = 1.4E+2 ;
  $MyArray1 = array( "子" , "丑" , "寅" , "卯" );

  这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。

  5、运算符号:

  数学运算: 符号 意义 
  +  加法运算 
  -  减法运算 
  *  乘法运算 
  /  除法运算 
  %  取余数 
  ++  累加 
  --  递减 

  字符串运算:

  运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的&
  <?

  $a = "PHP 4" ;
  $b = "功能强大" ;
  echo $a.$b;
  ?>
  这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量?    >。

  逻辑运算:

  符号 意义 
  <  小于 
  >  大于 
  <=  小于或等于 
  >=  大于或等于 
  ==  等于 
  !=  不等于 
  &&  而且 (And) 
  and  而且 (And) 
  ||  或者 (Or) 
  or  或者 (Or) 
  xor  异或 (Xor) 
  !  不 (Not) 

  今天就说到这里,明天说一下流程控制。

 

学习目的:掌握PHP的流程控制

  1、if..else 循环有三种结构
  第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:

  if (expr) { statement }

  其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

  范例:本例省略大括号。

  <?PHP
  if ($state==1)echo "哈哈" ;
  ?>

  这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。

  范例:本例的执行部分有三行,不可省略大括号。

  <?PHP
  if ($state==1) {
  echo "哈哈 ;
  echo "<br>" ;
  }
  ?>


  第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下

if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。

  <?PHP
  if ($state==1) {
  echo "哈哈" ;
  echo "<br>";
  }
  else{
  echo "呵呵";
  echo "<br>";
  }
  ?>


  第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。

  直接看下面的例子

  <?PHP
  if ( $a > $b ) {
  echo "a 比 b 大" ;
  } elseif ( $a == $b ) {
  echo "a 等于 b" ;
  } else {
  echo "a 比 b 小" ;
  }
  ?>
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。

2、 for 循环就单纯只有一种,没有变化,它的语法如下


  for (expr1; expr2; expr3) { statement }

  其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

  下例是用 for 循环写的的例子。

  <?PHP
  for ( $i = 1 ; $i <= 10 ; $i ++) {
  echo "这是第".$i."次循环<br>" ;
  }
  ?>

  3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。

  语法如下

  switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }

  其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
<?PHP
  switch ( date ( "D" )) {
  case "Mon" :
  echo "今天星期一" ;
  break;
  case "Tue" :
  echo "今天星期二" ;
  break;
  case "Wed" :
  echo "今天星期三" ;
  break;
  case "Thu" :
  echo "今天星期四" ;
  break;
  case "Fri" :
  echo "今天星期五" ;
  break;
  default:
  echo "今天放假" ;
  break;
  }
  ?>

  这里需要注意的是break;别遗漏了,default,省略是可以的。


  很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。

  今天就说到这里,明天开始说数据库的使用。

 

[!--infotagslink--]

相关文章

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

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

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

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

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • PHP文件上传一些小收获

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