找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1162|回复: 0
打印 上一主题 下一主题

PHP fopen 读取带中文URL地址的一点见解

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 08:27:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            但昨天在读取一张图片的时候出问题了,后来发现是URL里带中文字符。
例如下面这种情况:
[U]复制代码[/U] 代码如下:
$files = fopen('http://www.website.com/我的PP.jpg', 'rb');

那“$files”的返回值将会是“False”。首先我想到的是将URL用urlencode编码一下,发现还是不行,原来urlencode会把“:”、“/”字符也编码了,那URL就不是URL了。呵,说得有些绕口,那就把“:”、“/”字符的编码替换回来就应该行的。
[U]复制代码[/U] 代码如下:
$url = 'http://www.website.com/我的PP.jpg';
$url = preg_replace('/\%3A/i', ':', preg_replace('/\%2F/i', '/', urlencode(urldecode($url)))); $file = fopen($url, 'rb');

试试,嘿~还真是行了。下面再温习一下fopen()函数:
fopen() 函数打开文件或者URL。 如果打开失败,本函数返回FALSE。 打开成功,本函数返回TRUE。
一、语法:
[U]复制代码[/U] 代码如下:fopen(filename, mode, include_path, context)  
[TR]
[TD]参数[/TD]
[TD]描述[/TD][/TR]
[TR]
[TD]filename[/TD]
[TD]规定要打开的文件或 URL。[/TD][/TR]
[TR]
[TD]mode[/TD]
[TD]规定要求到该文件/流的访问类型。可能的值见下表。[/TD][/TR]
[TR]
[TD]include_path[/TD]
[TD]如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。[/TD][/TR]
[TR]
[TD]context[/TD]
[TD]规定文件句柄的环境。Context 是可以修改流的行为的一套选项。[/TD][/TR]

二、mode 参数的可能的值:
[TR]
[TD]mode[/TD]
[TD]说明[/TD][/TR]
[TR]
[TD]"r"[/TD]
[TD]只读方式打开,将文件指针指向文件头。[/TD][/TR]
[TR]
[TD]"r+"[/TD]
[TD]读写方式打开,将文件指针指向文件头。[/TD][/TR]
[TR]
[TD]"w"[/TD]
[TD]写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。[/TD][/TR]
[TR]
[TD]"w+"[/TD]
[TD]读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。[/TD][/TR]
[TR]
[TD]"a"[/TD]
[TD]写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。[/TD][/TR]
[TR]
[TD]"a+"[/TD]
[TD]读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。[/TD][/TR]
[TR]
[TD]"x"[/TD]
[TD]创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCLO_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。[/TD][/TR]
[TR]
[TD]"x+"[/TD]
[TD]创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCLO_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。[/TD][/TR]

            
            
您可能感兴趣的文章:
  • php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
  • PHP 获取远程网页内容的代码(fopen,curl已测)
  • PHP读取网页文件内容的实现代码(fopen,curl等)
  • 解析php中的fopen()函数用打开文件模式说明
  • php打开文件fopen函数的使用说明
  • php读取本地文件常用函数(fopen与file_get_contents)
  • PHP fopen()和 file_get_contents()应用与差异介绍
  • php中file_get_content 和curl以及fopen 效率分析
  • php使用fopen创建utf8编码文件的方法
  • PHP中通过fopen()函数访问远程文件示例
  • PHP使用fopen与file_get_contents读取文件实例分享
  • php 使用fopen函数创建、打开文件详解及实例代码
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端