PHP中通过fopen()函数访问远程文件示例_php技巧

使用PHP不仅可以让用户通过浏览器访问服务器端的文件,还可以通过HTTP或FTP等协议访问其他服务器中的文件,可以在大多数需要用文件名作为参数的函数中使用HTTP和FTP URL来代替文件名。使用fopen()函数将指定的文件名与资源绑定到一个流上,如果文件名是“scheme://…”的格式,则被当成一个URL,PHP将搜索协议处理器(也被成为封装协议)来处理此模式。

如果需要远程访问文件,必须在PHP的配置文件中激活“allow_url_fopen”选项,才能使用fopen()函数打开远程文件。而且还要确定其他服务器中的文件是否有访问权限,如果使用HTTP协议对远程文件进行连接,只能以“只读”模式打开。如果需要访问的远程FTP服务器中,对所提供的用户开启了“可写权限,则使用FTP协议连接远程文件时,就可以使用“只写”或“只读”模式打开文件。但不可以使用“可读可写”模式。

使用PHP访问远程文件就像访问本地文件一样,都是使用相同的读写函数处理。例如,可以用以下范例来打开远程Web服务器上的文件,解析我们需要的输出数据,然后就将这些数据用在数据库的检索中,或者简单地将其输出到网站剩下内容的样式匹配中。代码如下所示:

复制代码 代码如下:

<?php
//通过http打开远程文件
$file = fopen(http://www.jb51.net, "r") or die("打开远程文件失败!!");
while (!feof($file)){
    $line = fgets($file,1024);     //每读取一行
//如果找到远程文件中的标题标记则取出标题,并退出循环,不在读取文件
    if (preg_match("/<titile>(.*/)<\/title>",$line,$out)){     //使用正则匹配标题标记
        $title = $out[1];     //将标题标记中的标题字符取出
        break;     //退出循环,结束远程文件读取
    }
}
 
fclose($file);
echo $title;
?>

如果有合法的访问权限,可以以一个用户的身份和某FTP服务器建立连接,这样就可以向该FTP服务器端的文件进行写操作了。可以用该技术来存储远程日志文件等操作,但仅能用该方法来创建新的文件,如果尝试覆盖已经存在的文件,fopen()函数的调用将会失败。而且要以匿名(anonymous)以外的用户名连接服务器,并需要指明用户名(甚至密码),例如“ftp://user:password@ftp.lampbrother.net/path/to/file”。代码如下所示:

复制代码 代码如下:

<?php
    //在ftp.lampbrother.net的远程服务器上创建文件,以写的模式打开
    file = fopen("ftp://user:password@ftp.lapbrother.net/path/to/file", "w");
    //将一个字符串写入到远程文件中去
    fwrite($file, "Linux+Apache+MySQL+PHP");
 
    fclose($file);
?>

为了避免由于访问远程主机时发生的超时错误,可以使用set_time_limit()函数对程序的运行时间加以限制。

时间: 2024-09-18 03:35:28

PHP中通过fopen()函数访问远程文件示例_php技巧的相关文章

解析php中的fopen()函数用打开文件模式说明_php技巧

fopen() 函数用于在 PHP 中打开文件.此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件: 复制代码 代码如下: <?php$file=fopen("welcome.txt","r");?> 文件可能通过下列模式来打开:r : 只读.指针定位在文件的开头,如果文件不会报错.r+: 读/写.指针定位在文件的开头,如果文件不存会报错.w : 只写.打开并清空文件的内容,如果文件不存在,则创建新文件.w+: 读/写.打开

PHP自定义函数格式化json数据示例_php技巧

本文实例讲述了PHP自定义函数格式化json数据的方法.分享给大家供大家参考,具体如下: <?php /** * Formats a JSON string for pretty printing * * @param string $json The JSON to make pretty * @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks * @return string

在WordPress中使用wp_count_posts函数来统计文章数量_php技巧

做一个全站统计是不是很酷?长久的博客越来越少,何不给自己的一个统计,看看自己在这个博客上努力了多少,不但给自己也给游客,wp_count_posts是在 WordPress 中用来统计文章数量的函数,可以统计所有类型的文章(post)和页面(page). 描述wp_count_posts是在 WordPress 中用来统计文章数量的函数,可以统计所有类型的文章(post)和页面(page). 使用 //获取文章数量 $postcount = wp_count_posts(); //获取页面数量

php中 ob_start等函数截取标准输出的方法_php技巧

最近在用PHP在cli下开发一款软件,遇到了这样的问题.我想将PHP脚本中输出的东西收集在一起,于是使用了ob_start和ob_end_flush这两个函数,确实有达到收集输出内容的作用,但同时也将这些打印到了控制台界面中.我想问的是有没有办法,阻止PHP像控制台输出信息.该软件原则上是不允许向控制台打印任何东西的. php-cli本身脱离web服务器执行脚本,我不知道你现在获取到的数据是怎么拿到的?如果你不是通过cli执行php程序返回的值拿到的,那么可以使用ob_get_clean() 他

php中利用explode函数分割字符串到数组_php技巧

分割字符串 //利用 explode 函数分割字符串到数组 复制代码 代码如下: <?php $source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串 $hello = explode(',',$source); for($index=0;$index<count($hello);$index++) { echo $hello[$index];echo "</br>"; } ?>

PHP的Yii框架中YiiBase入口类的扩展写法示例_php技巧

通过yiic.php自动创建一个应用后,入口文件初始代码如下: <?php // change the following paths if necessary $yii=dirname(__FILE__).'/../yii/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // remove the following lines when in production mode defined

php 5.6版本中编写一个PHP扩展的简单示例_php技巧

有时候在php本身没有满足需求的api时候,需要自己写相应的扩展,扩展写完之后进行编译,即可加入自己的开发环境中,扩展php的功能. 这里实现一个连接字符串和int型数的连接操作的简单扩展. 首先,下载最新的php源码安装包,进入ext/目录,新建extstrcat.def: 复制代码 代码如下: string extstrcat(string strarg, int intarg) 随后运行: 复制代码 代码如下: ./ext_skel --extname=extstrcat --proto=

Ajax实现对静态页面的文章访问统计功能示例_php技巧

本文实例讲述了Ajax实现对静态页面的文章访问统计功能.分享给大家供大家参考,具体如下: 众所周知,静态页面不仅速度快,而且对seo也有一定的帮助.前些日子,写了一帖关于<在SAE平台实现WordPress页面纯静态化至KVDB>.我自己使用了一段时间后,发现提速确实很明显.但是随之而来的一个问题就是,由于文章静态化后,页面并不会经过WordPress程序的处理,这样就导致了文章的访问量统计失效.当然,有一个叫做wp-postview的插件是可以解决这个问题的,但是我不是很喜欢插件,因为会拖慢

php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例_php技巧

本文实例讲述了php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8用法.分享给大家供大家参考,具体如下: /* *gb2312中文字符串截取 */ function substr_for_gb2312($str,$start,$len=null) { $totlelength = strlen($str); //特例情况 if ($len == null) $len = $totlelength; if ($len ==0) return ""